/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MainView.java
 *
 * Created on Feb 12, 2012, 10:46:18 PM
 */
package alwv;

import alwv.database.Query;
import alwv.database.ResultSetTableModel;
import alwv.database.ResultSetTableModelFactory;
import alwv.reports.*;
import java.awt.Desktop;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.plaf.FontUIResource;
import javax.swing.table.DefaultTableModel;
import org.joda.time.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

/**
 *
 * @author Sam
 */
public class MainView extends javax.swing.JFrame {

    /** Creates new form MainView */
    public MainView(boolean readOnly) {
        initComponents();
        conn = ALWVApp.getApplication().getConnection();
        openReportsTree.getSelectionModel().setSelectionMode(javax.swing.tree.TreeSelectionModel.SINGLE_TREE_SELECTION);
        this.setExtendedState(MAXIMIZED_BOTH);
        this.setTitle("Appleton League of Women Voters Treasury Management System");
        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);


        if (readOnly) {
            memberPane.remove(addNewMember);
            memberPane.remove(editMember);
            memberPane.remove(removeMember);

            nonmemberPane.remove(addNewNonmember);
            nonmemberPane.remove(editNonmember);
            nonmemberPane.remove(removeNonmember);

            vendorPane.remove(addNewVendor);
            vendorPane.remove(editVendor);
            vendorPane.remove(removeVendor);

            budgetPane.remove(newCategory);
            budgetPane.remove(newSubcategory);
            budgetPane.remove(addProjection);

            transactionsPane.remove(addTransaction);
            transactionsPane.remove(editTransaction);
            transactionsPane.remove(removeTransaction);
        }



        cMemberReportPane = new CreateMemberReportPane(conn);
        cMonthlyBudgetReportPane = new CreateMonthlyBudgetReportPane(conn);
        cNonmemberReportPane = new CreateNonmemberReportPane(conn);
        cYearlyBudgetReportPane = new CreateYearlyBudgetReportPane(conn);

        membersTable.setAutoCreateRowSorter(true);
        nonmembersTable.setAutoCreateRowSorter(true);
        vendorsTable.setAutoCreateRowSorter(true);
        accountsTable.setAutoCreateRowSorter(true);
        budgetTable.setAutoCreateRowSorter(true);
        transactionsTable.setAutoCreateRowSorter(true);

        newTransactionMonthBox.setSelectedIndex(DateTime.now().getMonthOfYear() - 1);
        newTransactionDayBox.setSelectedIndex(DateTime.now().getDayOfMonth() - 1);
        newTransactionYearBox.setSelectedIndex(DateTime.now().getYear() - 2011);


        updateAllDatabaseObjects();

        initializeReportTree();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainTabbedPane = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        memberPane = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        membersTable = new javax.swing.JTable();
        addNewMember = new javax.swing.JPanel();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jLabel24 = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        firstNameAddM = new javax.swing.JTextField();
        MlastNameAddM = new javax.swing.JTextField();
        addressAddM = new javax.swing.JTextField();
        cityAddM = new javax.swing.JTextField();
        stateAddM = new javax.swing.JTextField();
        zipAddM = new javax.swing.JTextField();
        zip4AddM = new javax.swing.JTextField();
        phoneAddM = new javax.swing.JTextField();
        emailAddM = new javax.swing.JTextField();
        addNewMemberButton = new javax.swing.JButton();
        editMember = new javax.swing.JPanel();
        jLabel42 = new javax.swing.JLabel();
        memberIDedit = new javax.swing.JComboBox();
        memberEditGo = new javax.swing.JButton();
        jScrollPane14 = new javax.swing.JScrollPane();
        memberEditTable = new javax.swing.JTable();
        editMemberButton = new javax.swing.JButton();
        jScrollPane23 = new javax.swing.JScrollPane();
        jTextPane5 = new javax.swing.JTextPane();
        removeMember = new javax.swing.JPanel();
        jScrollPane17 = new javax.swing.JScrollPane();
        membersDeleteTable = new javax.swing.JTable();
        jLabel45 = new javax.swing.JLabel();
        memberIDremove = new javax.swing.JComboBox();
        memberRemoveGo = new javax.swing.JButton();
        removeMemberButton = new javax.swing.JButton();
        jLabel50 = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        nonmemberPane = new javax.swing.JTabbedPane();
        jPanel9 = new javax.swing.JPanel();
        jScrollPane5 = new javax.swing.JScrollPane();
        nonmembersTable = new javax.swing.JTable();
        addNewNonmember = new javax.swing.JPanel();
        jLabel26 = new javax.swing.JLabel();
        jLabel28 = new javax.swing.JLabel();
        jLabel29 = new javax.swing.JLabel();
        jLabel30 = new javax.swing.JLabel();
        jLabel31 = new javax.swing.JLabel();
        jLabel32 = new javax.swing.JLabel();
        jLabel33 = new javax.swing.JLabel();
        jLabel34 = new javax.swing.JLabel();
        fullNameAddNM = new javax.swing.JTextField();
        addressAddNM = new javax.swing.JTextField();
        cityAddNM = new javax.swing.JTextField();
        stateAddNM = new javax.swing.JTextField();
        zipAddNM = new javax.swing.JTextField();
        zip4AddNM = new javax.swing.JTextField();
        phoneAddNM = new javax.swing.JTextField();
        emailAddNM = new javax.swing.JTextField();
        addNewNonmemberButton = new javax.swing.JButton();
        editNonmember = new javax.swing.JPanel();
        jLabel43 = new javax.swing.JLabel();
        nonmemberIDedit = new javax.swing.JComboBox();
        nonmemberEditGo = new javax.swing.JButton();
        jScrollPane15 = new javax.swing.JScrollPane();
        nonmemberEditTable = new javax.swing.JTable();
        jScrollPane21 = new javax.swing.JScrollPane();
        jTextPane3 = new javax.swing.JTextPane();
        editNonmemberButton = new javax.swing.JButton();
        removeNonmember = new javax.swing.JPanel();
        nonmemberIDremove = new javax.swing.JComboBox();
        jScrollPane18 = new javax.swing.JScrollPane();
        nonmemberRemoveTable = new javax.swing.JTable();
        nonmemberRemoveGo = new javax.swing.JButton();
        jLabel46 = new javax.swing.JLabel();
        removeNonmemberButton = new javax.swing.JButton();
        jLabel48 = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        vendorPane = new javax.swing.JTabbedPane();
        jPanel16 = new javax.swing.JPanel();
        jScrollPane6 = new javax.swing.JScrollPane();
        vendorsTable = new javax.swing.JTable();
        addNewVendor = new javax.swing.JPanel();
        jLabel35 = new javax.swing.JLabel();
        emailAddV = new javax.swing.JTextField();
        phoneAddV = new javax.swing.JTextField();
        jLabel36 = new javax.swing.JLabel();
        zip4AddV = new javax.swing.JTextField();
        jLabel37 = new javax.swing.JLabel();
        zipAddV = new javax.swing.JTextField();
        jLabel38 = new javax.swing.JLabel();
        stateAddV = new javax.swing.JTextField();
        jLabel39 = new javax.swing.JLabel();
        jLabel40 = new javax.swing.JLabel();
        cityAddV = new javax.swing.JTextField();
        addressAddV = new javax.swing.JTextField();
        fullNameAddV = new javax.swing.JTextField();
        jLabel27 = new javax.swing.JLabel();
        jLabel41 = new javax.swing.JLabel();
        addNewVendorButton = new javax.swing.JButton();
        editVendor = new javax.swing.JPanel();
        jLabel44 = new javax.swing.JLabel();
        vendorIDedit = new javax.swing.JComboBox();
        vendorEditGo = new javax.swing.JButton();
        jScrollPane16 = new javax.swing.JScrollPane();
        vendorEditTable = new javax.swing.JTable();
        jScrollPane20 = new javax.swing.JScrollPane();
        jTextPane2 = new javax.swing.JTextPane();
        editVendorButton = new javax.swing.JButton();
        removeVendor = new javax.swing.JPanel();
        jLabel47 = new javax.swing.JLabel();
        vendorIDremove = new javax.swing.JComboBox();
        vendorRemoveGo = new javax.swing.JButton();
        jScrollPane19 = new javax.swing.JScrollPane();
        vendorRemoveTable = new javax.swing.JTable();
        removeVendorButton = new javax.swing.JButton();
        jLabel49 = new javax.swing.JLabel();
        jPanel5 = new javax.swing.JPanel();
        budgetPane = new javax.swing.JTabbedPane();
        jPanel10 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        budgetTable = new javax.swing.JTable();
        newCategory = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        newCategoryNameField = new javax.swing.JTextField();
        newCategoryButton = new javax.swing.JButton();
        newSubcategory = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        categoryList = new javax.swing.JList();
        newSubcategoryDescription = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        newSubCategoryTextField = new javax.swing.JTextField();
        addSubcategoryButton = new javax.swing.JButton();
        jLabel52 = new javax.swing.JLabel();
        jLabel53 = new javax.swing.JLabel();
        newSubcategoryProjectionField = new javax.swing.JTextField();
        jTextField30 = new javax.swing.JTextField();
        jLabel59 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        addProjection = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        categoryAndSubcategoryList = new javax.swing.JList();
        addProjectionDescription = new javax.swing.JLabel();
        subcategoryProjectionAmmountField = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        updateSubcategoryProjectionButton = new javax.swing.JButton();
        jLabel51 = new javax.swing.JLabel();
        subcategoryLobbyingPercentField = new javax.swing.JTextField();
        updateSubcategoryLobbyingButton = new javax.swing.JButton();
        jPanel6 = new javax.swing.JPanel();
        transactionsPane = new javax.swing.JTabbedPane();
        jPanel23 = new javax.swing.JPanel();
        jScrollPane9 = new javax.swing.JScrollPane();
        transactionsTable = new javax.swing.JTable();
        addTransaction = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        newTransactionMonthBox = new javax.swing.JComboBox();
        newTransactionDayBox = new javax.swing.JComboBox();
        newTransactionYearBox = new javax.swing.JComboBox();
        jLabel7 = new javax.swing.JLabel();
        newTransactionDirectionBox = new javax.swing.JComboBox();
        jLabel8 = new javax.swing.JLabel();
        newTransactionAmmountField = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        newTransactionAssociateIdComboBox = new javax.swing.JComboBox();
        jLabel10 = new javax.swing.JLabel();
        newTransactionCategoryBox = new javax.swing.JComboBox();
        jLabel11 = new javax.swing.JLabel();
        newTransactionCheckNumber = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        newTransactionTaxDeductableCheckbox = new javax.swing.JCheckBox();
        jScrollPane10 = new javax.swing.JScrollPane();
        newTransactionNoteArea = new javax.swing.JTextArea();
        jLabel13 = new javax.swing.JLabel();
        newTransactionButton = new javax.swing.JButton();
        jLabel54 = new javax.swing.JLabel();
        jLabel55 = new javax.swing.JLabel();
        newTransactionAccountComboBox = new javax.swing.JComboBox();
        jLabel56 = new javax.swing.JLabel();
        newTransactionActionField = new javax.swing.JTextField();
        editTransaction = new javax.swing.JPanel();
        jLabel16 = new javax.swing.JLabel();
        transactionIdComboBox = new javax.swing.JComboBox();
        jScrollPane12 = new javax.swing.JScrollPane();
        editTransactionTable = new javax.swing.JTable();
        jScrollPane13 = new javax.swing.JScrollPane();
        jTextPane1 = new javax.swing.JTextPane();
        editTransactionButton = new javax.swing.JButton();
        editTransactionSelectIDButton = new javax.swing.JButton();
        removeTransaction = new javax.swing.JPanel();
        jLabel14 = new javax.swing.JLabel();
        removeTransactionIdComboBox = new javax.swing.JComboBox();
        jScrollPane11 = new javax.swing.JScrollPane();
        removeTransactionTable = new javax.swing.JTable();
        removeTransactionButton = new javax.swing.JButton();
        jLabel15 = new javax.swing.JLabel();
        removeTransactionIdButton = new javax.swing.JButton();
        jPanel11 = new javax.swing.JPanel();
        jTabbedPane3 = new javax.swing.JTabbedPane();
        jPanel12 = new javax.swing.JPanel();
        jScrollPane22 = new javax.swing.JScrollPane();
        accountsTable = new javax.swing.JTable();
        jPanel7 = new javax.swing.JPanel();
        jLabel57 = new javax.swing.JLabel();
        fixBalanceComboBox = new javax.swing.JComboBox();
        jLabel58 = new javax.swing.JLabel();
        editBalanceField = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jTabbedPane2 = new javax.swing.JTabbedPane();
        createReportPanel = new javax.swing.JPanel();
        jScrollPane7 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        createReportContentPane = new javax.swing.JPanel();
        jPanel8 = new javax.swing.JPanel();
        jScrollPane8 = new javax.swing.JScrollPane();
        openReportsTree = new javax.swing.JTree();
        reportButtonOpen = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        mainViewMenuBar = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        menuCloseItem = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        menuPreferencesItem = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        menuAboutItem = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setName("Form"); // NOI18N
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        mainTabbedPane.setName("mainTabbedPane"); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N

        memberPane.setName("memberPane"); // NOI18N

        jPanel1.setName("jPanel1"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        membersTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, "Lancaste", "Kristen", "P.O. Box 217, 7474 at, Ave", "Appleton", "WI", "54911", "2351", "(920) 944-5274", "lectus.convallis.est@venenatis.com"},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Last Name", "First name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        membersTable.setColumnSelectionAllowed(true);
        membersTable.setName("membersTable"); // NOI18N
        jScrollPane1.setViewportView(membersTable);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(alwv.ALWVApp.class).getContext().getResourceMap(MainView.class);
        membersTable.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        membersTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("membersTable.columnModel.title0")); // NOI18N
        membersTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("membersTable.columnModel.title1")); // NOI18N
        membersTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("membersTable.columnModel.title2")); // NOI18N
        membersTable.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("jTable1.columnModel.title8")); // NOI18N
        membersTable.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("jTable1.columnModel.title7")); // NOI18N
        membersTable.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("jTable1.columnModel.title3")); // NOI18N
        membersTable.getColumnModel().getColumn(6).setHeaderValue(resourceMap.getString("jTable1.columnModel.title4")); // NOI18N
        membersTable.getColumnModel().getColumn(7).setHeaderValue(resourceMap.getString("jTable1.columnModel.title5")); // NOI18N
        membersTable.getColumnModel().getColumn(8).setHeaderValue(resourceMap.getString("jTable1.columnModel.title6")); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        memberPane.addTab(resourceMap.getString("jPanel1.TabConstraints.tabTitle"), jPanel1); // NOI18N

        addNewMember.setName("addNewMember"); // NOI18N

        jLabel17.setText(resourceMap.getString("jLabel17.text")); // NOI18N
        jLabel17.setName("jLabel17"); // NOI18N

        jLabel18.setText(resourceMap.getString("jLabel18.text")); // NOI18N
        jLabel18.setName("jLabel18"); // NOI18N

        jLabel19.setText(resourceMap.getString("jLabel19.text")); // NOI18N
        jLabel19.setName("jLabel19"); // NOI18N

        jLabel20.setText(resourceMap.getString("jLabel20.text")); // NOI18N
        jLabel20.setName("jLabel20"); // NOI18N

        jLabel21.setText(resourceMap.getString("jLabel21.text")); // NOI18N
        jLabel21.setName("jLabel21"); // NOI18N

        jLabel22.setText(resourceMap.getString("jLabel22.text")); // NOI18N
        jLabel22.setName("jLabel22"); // NOI18N

        jLabel23.setText(resourceMap.getString("jLabel23.text")); // NOI18N
        jLabel23.setName("jLabel23"); // NOI18N

        jLabel24.setText(resourceMap.getString("jLabel24.text")); // NOI18N
        jLabel24.setName("jLabel24"); // NOI18N

        jLabel25.setText(resourceMap.getString("jLabel25.text")); // NOI18N
        jLabel25.setName("jLabel25"); // NOI18N

        firstNameAddM.setName("firstNameAddM"); // NOI18N

        MlastNameAddM.setName("MlastNameAddM"); // NOI18N

        addressAddM.setName("addressAddM"); // NOI18N

        cityAddM.setName("cityAddM"); // NOI18N

        stateAddM.setName("stateAddM"); // NOI18N

        zipAddM.setName("zipAddM"); // NOI18N

        zip4AddM.setName("zip4AddM"); // NOI18N

        phoneAddM.setName("phoneAddM"); // NOI18N

        emailAddM.setName("emailAddM"); // NOI18N

        addNewMemberButton.setText(resourceMap.getString("addNewMemberButton.text")); // NOI18N
        addNewMemberButton.setName("addNewMemberButton"); // NOI18N
        addNewMemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addNewMemberButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout addNewMemberLayout = new javax.swing.GroupLayout(addNewMember);
        addNewMember.setLayout(addNewMemberLayout);
        addNewMemberLayout.setHorizontalGroup(
            addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addNewMemberLayout.createSequentialGroup()
                        .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(addNewMemberLayout.createSequentialGroup()
                                .addComponent(jLabel17)
                                .addGap(18, 18, 18)
                                .addComponent(firstNameAddM, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(addNewMemberLayout.createSequentialGroup()
                                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel19)
                                    .addComponent(jLabel18)
                                    .addComponent(jLabel20)
                                    .addComponent(jLabel21)
                                    .addComponent(jLabel22)
                                    .addComponent(jLabel23)
                                    .addComponent(jLabel24)
                                    .addComponent(jLabel25))
                                .addGap(18, 18, 18)
                                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(emailAddM, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
                                    .addComponent(phoneAddM, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
                                    .addComponent(stateAddM, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(cityAddM, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
                                    .addComponent(MlastNameAddM, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
                                    .addComponent(addressAddM, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
                                    .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(zip4AddM, javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(zipAddM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE)))))
                        .addGap(677, 677, 677))
                    .addGroup(addNewMemberLayout.createSequentialGroup()
                        .addComponent(addNewMemberButton)
                        .addContainerGap(795, Short.MAX_VALUE))))
        );
        addNewMemberLayout.setVerticalGroup(
            addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel17)
                    .addComponent(firstNameAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel18)
                    .addComponent(MlastNameAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel19)
                    .addComponent(addressAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel20)
                    .addComponent(cityAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel21)
                    .addComponent(stateAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel22)
                    .addComponent(zipAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel23)
                    .addComponent(zip4AddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addNewMemberLayout.createSequentialGroup()
                        .addComponent(jLabel24)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(addNewMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel25)
                            .addComponent(emailAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(phoneAddM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(addNewMemberButton)
                .addContainerGap(190, Short.MAX_VALUE))
        );

        memberPane.addTab(resourceMap.getString("addNewMember.TabConstraints.tabTitle"), addNewMember); // NOI18N

        editMember.setName("editMember"); // NOI18N

        jLabel42.setText(resourceMap.getString("jLabel42.text")); // NOI18N
        jLabel42.setName("jLabel42"); // NOI18N

        memberIDedit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        memberIDedit.setName("memberIDedit"); // NOI18N

        memberEditGo.setText(resourceMap.getString("memberEditGo.text")); // NOI18N
        memberEditGo.setName("memberEditGo"); // NOI18N
        memberEditGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                memberEditGoActionPerformed(evt);
            }
        });

        jScrollPane14.setName("jScrollPane14"); // NOI18N

        memberEditTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Last Name", "First Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        memberEditTable.setName("memberEditTable"); // NOI18N
        jScrollPane14.setViewportView(memberEditTable);

        editMemberButton.setText(resourceMap.getString("editMemberButton.text")); // NOI18N
        editMemberButton.setName("editMemberButton"); // NOI18N
        editMemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editMemberButtonActionPerformed(evt);
            }
        });

        jScrollPane23.setName("jScrollPane23"); // NOI18N

        jTextPane5.setText(resourceMap.getString("jTextPane5.text")); // NOI18N
        jTextPane5.setName("jTextPane5"); // NOI18N
        jScrollPane23.setViewportView(jTextPane5);

        javax.swing.GroupLayout editMemberLayout = new javax.swing.GroupLayout(editMember);
        editMember.setLayout(editMemberLayout);
        editMemberLayout.setHorizontalGroup(
            editMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel42)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(memberIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(memberEditGo)
                .addContainerGap(750, Short.MAX_VALUE))
            .addComponent(jScrollPane14, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(editMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(editMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane23, javax.swing.GroupLayout.PREFERRED_SIZE, 357, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(editMemberButton))
                .addContainerGap(567, Short.MAX_VALUE))
        );
        editMemberLayout.setVerticalGroup(
            editMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(editMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel42)
                    .addComponent(memberIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(memberEditGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane14, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane23, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(editMemberButton)
                .addContainerGap(209, Short.MAX_VALUE))
        );

        memberPane.addTab(resourceMap.getString("editMember.TabConstraints.tabTitle"), editMember); // NOI18N

        removeMember.setName("removeMember"); // NOI18N

        jScrollPane17.setName("jScrollPane17"); // NOI18N

        membersDeleteTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Last Name", "First Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        membersDeleteTable.setName("membersDeleteTable"); // NOI18N
        jScrollPane17.setViewportView(membersDeleteTable);

        jLabel45.setText(resourceMap.getString("jLabel45.text")); // NOI18N
        jLabel45.setName("jLabel45"); // NOI18N

        memberIDremove.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        memberIDremove.setName("memberIDremove"); // NOI18N

        memberRemoveGo.setText(resourceMap.getString("memberRemoveGo.text")); // NOI18N
        memberRemoveGo.setName("memberRemoveGo"); // NOI18N
        memberRemoveGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                memberRemoveGoActionPerformed(evt);
            }
        });

        removeMemberButton.setText(resourceMap.getString("removeMemberButton.text")); // NOI18N
        removeMemberButton.setName("removeMemberButton"); // NOI18N
        removeMemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeMemberButtonActionPerformed(evt);
            }
        });

        jLabel50.setText(resourceMap.getString("jLabel50.text")); // NOI18N
        jLabel50.setName("jLabel50"); // NOI18N

        javax.swing.GroupLayout removeMemberLayout = new javax.swing.GroupLayout(removeMember);
        removeMember.setLayout(removeMemberLayout);
        removeMemberLayout.setHorizontalGroup(
            removeMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel45)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(memberIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(memberRemoveGo)
                .addContainerGap(750, Short.MAX_VALUE))
            .addComponent(jScrollPane17, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(removeMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(removeMemberButton)
                .addContainerGap(789, Short.MAX_VALUE))
            .addGroup(removeMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel50)
                .addContainerGap(788, Short.MAX_VALUE))
        );
        removeMemberLayout.setVerticalGroup(
            removeMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeMemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(removeMemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel45)
                    .addComponent(memberIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(memberRemoveGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane17, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeMemberButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel50)
                .addContainerGap(364, Short.MAX_VALUE))
        );

        memberPane.addTab(resourceMap.getString("removeMember.TabConstraints.tabTitle"), removeMember); // NOI18N

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(memberPane, javax.swing.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(memberPane, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel2.TabConstraints.tabTitle"), jPanel2); // NOI18N

        jPanel3.setName("jPanel3"); // NOI18N

        nonmemberPane.setName("nonmemberPane"); // NOI18N

        jPanel9.setName("jPanel9"); // NOI18N

        jScrollPane5.setName("jScrollPane5"); // NOI18N

        nonmembersTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Full Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        nonmembersTable.setName("nonmembersTable"); // NOI18N
        jScrollPane5.setViewportView(nonmembersTable);

        javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
        jPanel9.setLayout(jPanel9Layout);
        jPanel9Layout.setHorizontalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        jPanel9Layout.setVerticalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        nonmemberPane.addTab(resourceMap.getString("jPanel9.TabConstraints.tabTitle"), jPanel9); // NOI18N

        addNewNonmember.setName("addNewNonmember"); // NOI18N

        jLabel26.setText(resourceMap.getString("jLabel26.text")); // NOI18N
        jLabel26.setName("jLabel26"); // NOI18N

        jLabel28.setText(resourceMap.getString("jLabel28.text")); // NOI18N
        jLabel28.setName("jLabel28"); // NOI18N

        jLabel29.setText(resourceMap.getString("jLabel29.text")); // NOI18N
        jLabel29.setName("jLabel29"); // NOI18N

        jLabel30.setText(resourceMap.getString("jLabel30.text")); // NOI18N
        jLabel30.setName("jLabel30"); // NOI18N

        jLabel31.setText(resourceMap.getString("jLabel31.text")); // NOI18N
        jLabel31.setName("jLabel31"); // NOI18N

        jLabel32.setText(resourceMap.getString("jLabel32.text")); // NOI18N
        jLabel32.setName("jLabel32"); // NOI18N

        jLabel33.setText(resourceMap.getString("jLabel33.text")); // NOI18N
        jLabel33.setName("jLabel33"); // NOI18N

        jLabel34.setText(resourceMap.getString("jLabel34.text")); // NOI18N
        jLabel34.setName("jLabel34"); // NOI18N

        fullNameAddNM.setName("fullNameAddNM"); // NOI18N

        addressAddNM.setName("addressAddNM"); // NOI18N

        cityAddNM.setName("cityAddNM"); // NOI18N

        stateAddNM.setName("stateAddNM"); // NOI18N

        zipAddNM.setName("zipAddNM"); // NOI18N

        zip4AddNM.setName("zip4AddNM"); // NOI18N

        phoneAddNM.setName("phoneAddNM"); // NOI18N

        emailAddNM.setName("emailAddNM"); // NOI18N

        addNewNonmemberButton.setText(resourceMap.getString("addNewNonmemberButton.text")); // NOI18N
        addNewNonmemberButton.setName("addNewNonmemberButton"); // NOI18N
        addNewNonmemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addNewNonmemberButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout addNewNonmemberLayout = new javax.swing.GroupLayout(addNewNonmember);
        addNewNonmember.setLayout(addNewNonmemberLayout);
        addNewNonmemberLayout.setHorizontalGroup(
            addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addNewNonmemberLayout.createSequentialGroup()
                        .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel31)
                            .addComponent(jLabel32)
                            .addComponent(jLabel33)
                            .addComponent(jLabel34)
                            .addComponent(jLabel26)
                            .addComponent(jLabel28)
                            .addComponent(jLabel29)
                            .addComponent(jLabel30))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(fullNameAddNM, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(addressAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(cityAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
                            .addComponent(stateAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(zipAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(zip4AddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(phoneAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
                            .addComponent(emailAddNM, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)))
                    .addComponent(addNewNonmemberButton))
                .addContainerGap(653, Short.MAX_VALUE))
        );
        addNewNonmemberLayout.setVerticalGroup(
            addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel26)
                    .addComponent(fullNameAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel28)
                    .addComponent(addressAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel29)
                    .addComponent(cityAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel30)
                    .addComponent(stateAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel31)
                    .addComponent(zipAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel32)
                    .addComponent(zip4AddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel33)
                    .addComponent(phoneAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel34)
                    .addComponent(emailAddNM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(addNewNonmemberButton)
                .addContainerGap(215, Short.MAX_VALUE))
        );

        nonmemberPane.addTab(resourceMap.getString("addNewNonmember.TabConstraints.tabTitle"), addNewNonmember); // NOI18N

        editNonmember.setName("editNonmember"); // NOI18N

        jLabel43.setText(resourceMap.getString("jLabel43.text")); // NOI18N
        jLabel43.setName("jLabel43"); // NOI18N

        nonmemberIDedit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        nonmemberIDedit.setName("nonmemberIDedit"); // NOI18N

        nonmemberEditGo.setText(resourceMap.getString("nonmemberEditGo.text")); // NOI18N
        nonmemberEditGo.setName("nonmemberEditGo"); // NOI18N
        nonmemberEditGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nonmemberEditGoActionPerformed(evt);
            }
        });

        jScrollPane15.setName("jScrollPane15"); // NOI18N

        nonmemberEditTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Full Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        nonmemberEditTable.setName("nonmemberEditTable"); // NOI18N
        jScrollPane15.setViewportView(nonmemberEditTable);

        jScrollPane21.setName("jScrollPane21"); // NOI18N

        jTextPane3.setText(resourceMap.getString("jTextPane3.text")); // NOI18N
        jTextPane3.setName("jTextPane3"); // NOI18N
        jScrollPane21.setViewportView(jTextPane3);

        editNonmemberButton.setText(resourceMap.getString("editNonmemberButton.text")); // NOI18N
        editNonmemberButton.setName("editNonmemberButton"); // NOI18N
        editNonmemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editNonmemberButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout editNonmemberLayout = new javax.swing.GroupLayout(editNonmember);
        editNonmember.setLayout(editNonmemberLayout);
        editNonmemberLayout.setHorizontalGroup(
            editNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel43)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(nonmemberIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(nonmemberEditGo)
                .addContainerGap(731, Short.MAX_VALUE))
            .addComponent(jScrollPane15, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(editNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(editNonmemberButton)
                .addContainerGap(815, Short.MAX_VALUE))
            .addGroup(editNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane21, javax.swing.GroupLayout.PREFERRED_SIZE, 397, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(527, Short.MAX_VALUE))
        );
        editNonmemberLayout.setVerticalGroup(
            editNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(editNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel43)
                    .addComponent(nonmemberIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(nonmemberEditGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane15, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane21, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(editNonmemberButton)
                .addContainerGap(231, Short.MAX_VALUE))
        );

        nonmemberPane.addTab(resourceMap.getString("editNonmember.TabConstraints.tabTitle"), editNonmember); // NOI18N

        removeNonmember.setName("removeNonmember"); // NOI18N

        nonmemberIDremove.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        nonmemberIDremove.setName("nonmemberIDremove"); // NOI18N

        jScrollPane18.setName("jScrollPane18"); // NOI18N

        nonmemberRemoveTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Full Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        nonmemberRemoveTable.setName("nonmemberRemoveTable"); // NOI18N
        jScrollPane18.setViewportView(nonmemberRemoveTable);

        nonmemberRemoveGo.setText(resourceMap.getString("nonmemberRemoveGo.text")); // NOI18N
        nonmemberRemoveGo.setName("nonmemberRemoveGo"); // NOI18N
        nonmemberRemoveGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nonmemberRemoveGoActionPerformed(evt);
            }
        });

        jLabel46.setText(resourceMap.getString("jLabel46.text")); // NOI18N
        jLabel46.setName("jLabel46"); // NOI18N

        removeNonmemberButton.setText(resourceMap.getString("removeNonmemberButton.text")); // NOI18N
        removeNonmemberButton.setName("removeNonmemberButton"); // NOI18N
        removeNonmemberButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeNonmemberButtonActionPerformed(evt);
            }
        });

        jLabel48.setText(resourceMap.getString("jLabel48.text")); // NOI18N
        jLabel48.setName("jLabel48"); // NOI18N

        javax.swing.GroupLayout removeNonmemberLayout = new javax.swing.GroupLayout(removeNonmember);
        removeNonmember.setLayout(removeNonmemberLayout);
        removeNonmemberLayout.setHorizontalGroup(
            removeNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel46)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(nonmemberIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(nonmemberRemoveGo)
                .addContainerGap(731, Short.MAX_VALUE))
            .addComponent(jScrollPane18, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(removeNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(removeNonmemberButton)
                .addContainerGap(771, Short.MAX_VALUE))
            .addGroup(removeNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel48)
                .addContainerGap(788, Short.MAX_VALUE))
        );
        removeNonmemberLayout.setVerticalGroup(
            removeNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeNonmemberLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(removeNonmemberLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel46)
                    .addComponent(nonmemberIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(nonmemberRemoveGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane18, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeNonmemberButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel48)
                .addContainerGap(365, Short.MAX_VALUE))
        );

        nonmemberPane.addTab(resourceMap.getString("removeNonmember.TabConstraints.tabTitle"), removeNonmember); // NOI18N

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(nonmemberPane, javax.swing.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE)
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(nonmemberPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel3.TabConstraints.tabTitle"), jPanel3); // NOI18N

        jPanel4.setName("jPanel4"); // NOI18N

        vendorPane.setName("vendorPane"); // NOI18N

        jPanel16.setName("jPanel16"); // NOI18N

        jScrollPane6.setName("jScrollPane6"); // NOI18N

        vendorsTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Vendor Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        vendorsTable.setName("vendorsTable"); // NOI18N
        jScrollPane6.setViewportView(vendorsTable);

        javax.swing.GroupLayout jPanel16Layout = new javax.swing.GroupLayout(jPanel16);
        jPanel16.setLayout(jPanel16Layout);
        jPanel16Layout.setHorizontalGroup(
            jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        jPanel16Layout.setVerticalGroup(
            jPanel16Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        vendorPane.addTab(resourceMap.getString("jPanel16.TabConstraints.tabTitle"), jPanel16); // NOI18N

        addNewVendor.setName("addNewVendor"); // NOI18N

        jLabel35.setText(resourceMap.getString("jLabel35.text")); // NOI18N
        jLabel35.setName("jLabel35"); // NOI18N

        emailAddV.setName("emailAddV"); // NOI18N

        phoneAddV.setName("phoneAddV"); // NOI18N

        jLabel36.setText(resourceMap.getString("jLabel36.text")); // NOI18N
        jLabel36.setName("jLabel36"); // NOI18N

        zip4AddV.setName("zip4AddV"); // NOI18N

        jLabel37.setText(resourceMap.getString("jLabel37.text")); // NOI18N
        jLabel37.setName("jLabel37"); // NOI18N

        zipAddV.setName("zipAddV"); // NOI18N

        jLabel38.setText(resourceMap.getString("jLabel38.text")); // NOI18N
        jLabel38.setName("jLabel38"); // NOI18N

        stateAddV.setName("stateAddV"); // NOI18N

        jLabel39.setText(resourceMap.getString("jLabel39.text")); // NOI18N
        jLabel39.setName("jLabel39"); // NOI18N

        jLabel40.setText(resourceMap.getString("jLabel40.text")); // NOI18N
        jLabel40.setName("jLabel40"); // NOI18N

        cityAddV.setName("cityAddV"); // NOI18N

        addressAddV.setName("addressAddV"); // NOI18N

        fullNameAddV.setName("fullNameAddV"); // NOI18N

        jLabel27.setText(resourceMap.getString("jLabel27.text")); // NOI18N
        jLabel27.setName("jLabel27"); // NOI18N

        jLabel41.setText(resourceMap.getString("jLabel41.text")); // NOI18N
        jLabel41.setName("jLabel41"); // NOI18N

        addNewVendorButton.setText(resourceMap.getString("addNewVendorButton.text")); // NOI18N
        addNewVendorButton.setName("addNewVendorButton"); // NOI18N
        addNewVendorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addNewVendorButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout addNewVendorLayout = new javax.swing.GroupLayout(addNewVendor);
        addNewVendor.setLayout(addNewVendorLayout);
        addNewVendorLayout.setHorizontalGroup(
            addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addNewVendorLayout.createSequentialGroup()
                        .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel38)
                            .addComponent(jLabel37)
                            .addComponent(jLabel36)
                            .addComponent(jLabel35)
                            .addComponent(jLabel27)
                            .addComponent(jLabel41)
                            .addComponent(jLabel40)
                            .addComponent(jLabel39))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(fullNameAddV, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(addressAddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                            .addComponent(cityAddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
                            .addComponent(stateAddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(zipAddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(zip4AddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(phoneAddV, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)
                            .addComponent(emailAddV, javax.swing.GroupLayout.Alignment.LEADING)))
                    .addComponent(addNewVendorButton))
                .addContainerGap(653, Short.MAX_VALUE))
        );
        addNewVendorLayout.setVerticalGroup(
            addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addNewVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel27)
                    .addComponent(fullNameAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel41)
                    .addComponent(addressAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel40)
                    .addComponent(cityAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel39)
                    .addComponent(stateAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel38)
                    .addComponent(zipAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel37)
                    .addComponent(zip4AddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel36)
                    .addComponent(phoneAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addNewVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel35)
                    .addComponent(emailAddV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(addNewVendorButton)
                .addContainerGap(215, Short.MAX_VALUE))
        );

        vendorPane.addTab(resourceMap.getString("addNewVendor.TabConstraints.tabTitle"), addNewVendor); // NOI18N

        editVendor.setName("editVendor"); // NOI18N

        jLabel44.setText(resourceMap.getString("jLabel44.text")); // NOI18N
        jLabel44.setName("jLabel44"); // NOI18N

        vendorIDedit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        vendorIDedit.setName("vendorIDedit"); // NOI18N

        vendorEditGo.setText(resourceMap.getString("vendorEditGo.text")); // NOI18N
        vendorEditGo.setName("vendorEditGo"); // NOI18N
        vendorEditGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                vendorEditGoActionPerformed(evt);
            }
        });

        jScrollPane16.setName("jScrollPane16"); // NOI18N

        vendorEditTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Vendor Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        vendorEditTable.setName("vendorEditTable"); // NOI18N
        jScrollPane16.setViewportView(vendorEditTable);

        jScrollPane20.setName("jScrollPane20"); // NOI18N

        jTextPane2.setText(resourceMap.getString("jTextPane2.text")); // NOI18N
        jTextPane2.setName("jTextPane2"); // NOI18N
        jScrollPane20.setViewportView(jTextPane2);

        editVendorButton.setText(resourceMap.getString("editVendorButton.text")); // NOI18N
        editVendorButton.setName("editVendorButton"); // NOI18N
        editVendorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editVendorButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout editVendorLayout = new javax.swing.GroupLayout(editVendor);
        editVendor.setLayout(editVendorLayout);
        editVendorLayout.setHorizontalGroup(
            editVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel44)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(vendorIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(vendorEditGo)
                .addContainerGap(754, Short.MAX_VALUE))
            .addComponent(jScrollPane16, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(editVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane20, javax.swing.GroupLayout.PREFERRED_SIZE, 435, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(489, Short.MAX_VALUE))
            .addGroup(editVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(editVendorButton)
                .addContainerGap(815, Short.MAX_VALUE))
        );
        editVendorLayout.setVerticalGroup(
            editVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(editVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel44)
                    .addComponent(vendorIDedit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(vendorEditGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane16, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane20, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(editVendorButton)
                .addContainerGap(230, Short.MAX_VALUE))
        );

        vendorPane.addTab(resourceMap.getString("editVendor.TabConstraints.tabTitle"), editVendor); // NOI18N

        removeVendor.setName("removeVendor"); // NOI18N

        jLabel47.setText(resourceMap.getString("jLabel47.text")); // NOI18N
        jLabel47.setName("jLabel47"); // NOI18N

        vendorIDremove.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5" }));
        vendorIDremove.setName("vendorIDremove"); // NOI18N

        vendorRemoveGo.setText(resourceMap.getString("vendorRemoveGo.text")); // NOI18N
        vendorRemoveGo.setName("vendorRemoveGo"); // NOI18N
        vendorRemoveGo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                vendorRemoveGoActionPerformed(evt);
            }
        });

        jScrollPane19.setName("jScrollPane19"); // NOI18N

        vendorRemoveTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Vendor Name", "Address", "City", "State", "Zip", "Zip4", "Phone", "Email"
            }
        ));
        vendorRemoveTable.setName("vendorRemoveTable"); // NOI18N
        jScrollPane19.setViewportView(vendorRemoveTable);

        removeVendorButton.setText(resourceMap.getString("removeVendorButton.text")); // NOI18N
        removeVendorButton.setName("removeVendorButton"); // NOI18N
        removeVendorButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeVendorButtonActionPerformed(evt);
            }
        });

        jLabel49.setText(resourceMap.getString("jLabel49.text")); // NOI18N
        jLabel49.setName("jLabel49"); // NOI18N

        javax.swing.GroupLayout removeVendorLayout = new javax.swing.GroupLayout(removeVendor);
        removeVendor.setLayout(removeVendorLayout);
        removeVendorLayout.setHorizontalGroup(
            removeVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel47)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(vendorIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(vendorRemoveGo)
                .addContainerGap(754, Short.MAX_VALUE))
            .addComponent(jScrollPane19, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(removeVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(removeVendorButton)
                .addContainerGap(793, Short.MAX_VALUE))
            .addGroup(removeVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel49)
                .addContainerGap(788, Short.MAX_VALUE))
        );
        removeVendorLayout.setVerticalGroup(
            removeVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeVendorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(removeVendorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel47)
                    .addComponent(vendorIDremove, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(vendorRemoveGo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane19, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeVendorButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel49)
                .addContainerGap(364, Short.MAX_VALUE))
        );

        vendorPane.addTab(resourceMap.getString("removeVendor.TabConstraints.tabTitle"), removeVendor); // NOI18N

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(vendorPane, javax.swing.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE)
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(vendorPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel4.TabConstraints.tabTitle"), jPanel4); // NOI18N

        jPanel5.setName("jPanel5"); // NOI18N

        budgetPane.setName("budgetPane"); // NOI18N

        jPanel10.setName("jPanel10"); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        budgetTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"A. Dues", "2200", "2,335"},
                {"B. Contributions", null, null},
                {"    1. Member Contributions", "1000", "765"},
                {null, null, null}
            },
            new String [] {
                "Category", "Budget", "Actual"
            }
        ));
        budgetTable.setName("budgetTable"); // NOI18N
        jScrollPane2.setViewportView(budgetTable);
        budgetTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("budgetTable.columnModel.title0")); // NOI18N
        budgetTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("budgetTable.columnModel.title1")); // NOI18N
        budgetTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("budgetTable.columnModel.title2")); // NOI18N

        javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10);
        jPanel10.setLayout(jPanel10Layout);
        jPanel10Layout.setHorizontalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 914, Short.MAX_VALUE)
        );
        jPanel10Layout.setVerticalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 486, Short.MAX_VALUE)
        );

        budgetPane.addTab(resourceMap.getString("jPanel10.TabConstraints.tabTitle"), jPanel10); // NOI18N

        newCategory.setName("newCategory"); // NOI18N

        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
        jLabel3.setName("jLabel3"); // NOI18N

        newCategoryNameField.setText(resourceMap.getString("newCategoryNameField.text")); // NOI18N
        newCategoryNameField.setName("newCategoryNameField"); // NOI18N

        newCategoryButton.setText(resourceMap.getString("newCategoryButton.text")); // NOI18N
        newCategoryButton.setName("newCategoryButton"); // NOI18N
        newCategoryButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newCategoryButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout newCategoryLayout = new javax.swing.GroupLayout(newCategory);
        newCategory.setLayout(newCategoryLayout);
        newCategoryLayout.setHorizontalGroup(
            newCategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(newCategoryLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(newCategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(newCategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                        .addComponent(jLabel1)
                        .addGroup(newCategoryLayout.createSequentialGroup()
                            .addComponent(jLabel3)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(newCategoryNameField)))
                    .addComponent(newCategoryButton))
                .addContainerGap(638, Short.MAX_VALUE))
        );
        newCategoryLayout.setVerticalGroup(
            newCategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(newCategoryLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(newCategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(newCategoryNameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(newCategoryButton)
                .addContainerGap(394, Short.MAX_VALUE))
        );

        budgetPane.addTab(resourceMap.getString("newCategory.TabConstraints.tabTitle"), newCategory); // NOI18N

        newSubcategory.setName("newSubcategory"); // NOI18N

        jScrollPane4.setName("jScrollPane4"); // NOI18N

        categoryList.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "B. Contributions" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        categoryList.setName("categoryList"); // NOI18N
        categoryList.setPreferredSize(new java.awt.Dimension(150, 16));
        jScrollPane4.setViewportView(categoryList);

        newSubcategoryDescription.setText(resourceMap.getString("newSubcategoryDescription.text")); // NOI18N
        newSubcategoryDescription.setName("newSubcategoryDescription"); // NOI18N

        jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
        jLabel4.setName("jLabel4"); // NOI18N

        newSubCategoryTextField.setText(resourceMap.getString("newSubCategoryTextField.text")); // NOI18N
        newSubCategoryTextField.setName("newSubCategoryTextField"); // NOI18N

        addSubcategoryButton.setText(resourceMap.getString("addSubcategoryButton.text")); // NOI18N
        addSubcategoryButton.setName("addSubcategoryButton"); // NOI18N
        addSubcategoryButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addSubcategoryButtonActionPerformed(evt);
            }
        });

        jLabel52.setText(resourceMap.getString("jLabel52.text")); // NOI18N
        jLabel52.setName("jLabel52"); // NOI18N

        jLabel53.setText(resourceMap.getString("jLabel53.text")); // NOI18N
        jLabel53.setName("jLabel53"); // NOI18N

        newSubcategoryProjectionField.setText(resourceMap.getString("newSubcategoryProjectionField.text")); // NOI18N
        newSubcategoryProjectionField.setName("newSubcategoryProjectionField"); // NOI18N

        jTextField30.setText(resourceMap.getString("jTextField30.text")); // NOI18N
        jTextField30.setName("jTextField30"); // NOI18N

        jLabel59.setText(resourceMap.getString("jLabel59.text")); // NOI18N
        jLabel59.setName("jLabel59"); // NOI18N

        jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N
        jTextField1.setName("jTextField1"); // NOI18N

        javax.swing.GroupLayout newSubcategoryLayout = new javax.swing.GroupLayout(newSubcategory);
        newSubcategory.setLayout(newSubcategoryLayout);
        newSubcategoryLayout.setHorizontalGroup(
            newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(newSubcategoryLayout.createSequentialGroup()
                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(newSubcategoryDescription)
                    .addComponent(jLabel53)
                    .addGroup(newSubcategoryLayout.createSequentialGroup()
                        .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel4)
                            .addComponent(jLabel52)
                            .addComponent(jLabel59))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(newSubCategoryTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 158, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jTextField30, javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(newSubcategoryProjectionField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 82, Short.MAX_VALUE))))
                    .addComponent(addSubcategoryButton))
                .addContainerGap(362, Short.MAX_VALUE))
        );
        newSubcategoryLayout.setVerticalGroup(
            newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 486, Short.MAX_VALUE)
            .addGroup(newSubcategoryLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(newSubcategoryDescription)
                .addGap(18, 18, 18)
                .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(newSubCategoryTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel52)
                    .addComponent(newSubcategoryProjectionField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel53)
                    .addComponent(jTextField30, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(newSubcategoryLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel59)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(addSubcategoryButton)
                .addContainerGap(316, Short.MAX_VALUE))
        );

        budgetPane.addTab(resourceMap.getString("newSubcategory.TabConstraints.tabTitle"), newSubcategory); // NOI18N

        addProjection.setName("addProjection"); // NOI18N

        jScrollPane3.setName("jScrollPane3"); // NOI18N

        categoryAndSubcategoryList.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "B. Contributions", "     1. Member Contributions", "     2. Member Ed Fund", "     3. Non-member Contribution", "     4. Non-member Ed Fund", "     5. In Kind Donation" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        categoryAndSubcategoryList.setName("categoryAndSubcategoryList"); // NOI18N
        categoryAndSubcategoryList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                categoryAndSubcategoryListValueChanged(evt);
            }
        });
        jScrollPane3.setViewportView(categoryAndSubcategoryList);

        addProjectionDescription.setText(resourceMap.getString("addProjectionDescription.text")); // NOI18N
        addProjectionDescription.setName("addProjectionDescription"); // NOI18N

        subcategoryProjectionAmmountField.setText(resourceMap.getString("subcategoryProjectionAmmountField.text")); // NOI18N
        subcategoryProjectionAmmountField.setName("subcategoryProjectionAmmountField"); // NOI18N

        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        updateSubcategoryProjectionButton.setText(resourceMap.getString("updateSubcategoryProjectionButton.text")); // NOI18N
        updateSubcategoryProjectionButton.setName("updateSubcategoryProjectionButton"); // NOI18N
        updateSubcategoryProjectionButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateSubcategoryProjectionButtonActionPerformed(evt);
            }
        });

        jLabel51.setText(resourceMap.getString("jLabel51.text")); // NOI18N
        jLabel51.setName("jLabel51"); // NOI18N

        subcategoryLobbyingPercentField.setText(resourceMap.getString("subcategoryLobbyingPercentField.text")); // NOI18N
        subcategoryLobbyingPercentField.setName("subcategoryLobbyingPercentField"); // NOI18N

        updateSubcategoryLobbyingButton.setText(resourceMap.getString("updateSubcategoryLobbyingButton.text")); // NOI18N
        updateSubcategoryLobbyingButton.setName("updateSubcategoryLobbyingButton"); // NOI18N
        updateSubcategoryLobbyingButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateSubcategoryLobbyingButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout addProjectionLayout = new javax.swing.GroupLayout(addProjection);
        addProjection.setLayout(addProjectionLayout);
        addProjectionLayout.setHorizontalGroup(
            addProjectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addProjectionLayout.createSequentialGroup()
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(addProjectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(addProjectionDescription)
                    .addComponent(jLabel2)
                    .addGroup(addProjectionLayout.createSequentialGroup()
                        .addComponent(subcategoryProjectionAmmountField, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(updateSubcategoryProjectionButton))
                    .addComponent(jLabel51)
                    .addGroup(addProjectionLayout.createSequentialGroup()
                        .addComponent(subcategoryLobbyingPercentField, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(updateSubcategoryLobbyingButton)))
                .addContainerGap(459, Short.MAX_VALUE))
        );
        addProjectionLayout.setVerticalGroup(
            addProjectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 486, Short.MAX_VALUE)
            .addGroup(addProjectionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(addProjectionDescription)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(addProjectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(subcategoryProjectionAmmountField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(updateSubcategoryProjectionButton))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel51)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(addProjectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(subcategoryLobbyingPercentField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(updateSubcategoryLobbyingButton))
                .addContainerGap(358, Short.MAX_VALUE))
        );

        budgetPane.addTab(resourceMap.getString("addProjection.TabConstraints.tabTitle"), addProjection); // NOI18N

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(budgetPane, javax.swing.GroupLayout.DEFAULT_SIZE, 919, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(budgetPane, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE))
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel5.TabConstraints.tabTitle"), jPanel5); // NOI18N

        jPanel6.setName("jPanel6"); // NOI18N

        transactionsPane.setName("transactionsPane"); // NOI18N

        jPanel23.setName("jPanel23"); // NOI18N

        jScrollPane9.setName("jScrollPane9"); // NOI18N

        transactionsTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null},
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Date", "Action", "Ammount", "Payer/Payee", "Category", "Subcategory", "Check #", "Tax Deductable?", "Notes"
            }
        ));
        transactionsTable.setName("transactionsTable"); // NOI18N
        jScrollPane9.setViewportView(transactionsTable);

        javax.swing.GroupLayout jPanel23Layout = new javax.swing.GroupLayout(jPanel23);
        jPanel23.setLayout(jPanel23Layout);
        jPanel23Layout.setHorizontalGroup(
            jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        jPanel23Layout.setVerticalGroup(
            jPanel23Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        transactionsPane.addTab(resourceMap.getString("jPanel23.TabConstraints.tabTitle"), jPanel23); // NOI18N

        addTransaction.setName("addTransaction"); // NOI18N

        jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N
        jLabel6.setName("jLabel6"); // NOI18N

        newTransactionMonthBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }));
        newTransactionMonthBox.setName("newTransactionMonthBox"); // NOI18N

        newTransactionDayBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" }));
        newTransactionDayBox.setName("newTransactionDayBox"); // NOI18N

        newTransactionYearBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020" }));
        newTransactionYearBox.setSelectedIndex(1);
        newTransactionYearBox.setToolTipText(resourceMap.getString("newTransactionYearBox.toolTipText")); // NOI18N
        newTransactionYearBox.setName("newTransactionYearBox"); // NOI18N

        jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
        jLabel7.setName("jLabel7"); // NOI18N

        newTransactionDirectionBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Payment", "Recieved" }));
        newTransactionDirectionBox.setName("newTransactionDirectionBox"); // NOI18N

        jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
        jLabel8.setName("jLabel8"); // NOI18N

        newTransactionAmmountField.setText(resourceMap.getString("newTransactionAmmountField.text")); // NOI18N
        newTransactionAmmountField.setName("newTransactionAmmountField"); // NOI18N

        jLabel9.setText(resourceMap.getString("jLabel9.text")); // NOI18N
        jLabel9.setName("jLabel9"); // NOI18N

        newTransactionAssociateIdComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Member1", "Member2", "Member3", "Member4" }));
        newTransactionAssociateIdComboBox.setName("newTransactionAssociateIdComboBox"); // NOI18N

        jLabel10.setText(resourceMap.getString("jLabel10.text")); // NOI18N
        jLabel10.setName("jLabel10"); // NOI18N

        newTransactionCategoryBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "A. Category 1", "    1. Subcategory 1", "    2. Subcategory 2", "B. Category 2", "    1. Subcategory 1", "    2. Subcategory 2", " " }));
        newTransactionCategoryBox.setName("newTransactionCategoryBox"); // NOI18N
        newTransactionCategoryBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newTransactionCategoryBoxActionPerformed(evt);
            }
        });

        jLabel11.setText(resourceMap.getString("jLabel11.text")); // NOI18N
        jLabel11.setName("jLabel11"); // NOI18N

        newTransactionCheckNumber.setText(resourceMap.getString("newTransactionCheckNumber.text")); // NOI18N
        newTransactionCheckNumber.setName("newTransactionCheckNumber"); // NOI18N

        jLabel12.setText(resourceMap.getString("jLabel12.text")); // NOI18N
        jLabel12.setName("jLabel12"); // NOI18N

        newTransactionTaxDeductableCheckbox.setText(resourceMap.getString("newTransactionTaxDeductableCheckbox.text")); // NOI18N
        newTransactionTaxDeductableCheckbox.setName("newTransactionTaxDeductableCheckbox"); // NOI18N

        jScrollPane10.setName("jScrollPane10"); // NOI18N

        newTransactionNoteArea.setColumns(20);
        newTransactionNoteArea.setRows(5);
        newTransactionNoteArea.setName("newTransactionNoteArea"); // NOI18N
        jScrollPane10.setViewportView(newTransactionNoteArea);

        jLabel13.setText(resourceMap.getString("jLabel13.text")); // NOI18N
        jLabel13.setName("jLabel13"); // NOI18N

        newTransactionButton.setText(resourceMap.getString("newTransactionButton.text")); // NOI18N
        newTransactionButton.setName("newTransactionButton"); // NOI18N
        newTransactionButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newTransactionButtonActionPerformed(evt);
            }
        });

        jLabel54.setText(resourceMap.getString("jLabel54.text")); // NOI18N
        jLabel54.setName("jLabel54"); // NOI18N

        jLabel55.setText(resourceMap.getString("jLabel55.text")); // NOI18N
        jLabel55.setName("jLabel55"); // NOI18N

        newTransactionAccountComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Checking" }));
        newTransactionAccountComboBox.setName("newTransactionAccountComboBox"); // NOI18N

        jLabel56.setText(resourceMap.getString("jLabel56.text")); // NOI18N
        jLabel56.setName("jLabel56"); // NOI18N

        newTransactionActionField.setText(resourceMap.getString("newTransactionActionField.text")); // NOI18N
        newTransactionActionField.setName("newTransactionActionField"); // NOI18N
        newTransactionActionField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                newTransactionActionFieldFocusGained(evt);
            }
        });

        javax.swing.GroupLayout addTransactionLayout = new javax.swing.GroupLayout(addTransaction);
        addTransaction.setLayout(addTransactionLayout);
        addTransactionLayout.setHorizontalGroup(
            addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel8)
                            .addComponent(jLabel6)
                            .addComponent(jLabel7))
                        .addGap(18, 18, 18)
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(addTransactionLayout.createSequentialGroup()
                                .addComponent(newTransactionMonthBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(newTransactionDayBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(newTransactionYearBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(newTransactionDirectionBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionAmmountField, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jScrollPane10, javax.swing.GroupLayout.PREFERRED_SIZE, 502, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addComponent(jLabel12)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(newTransactionTaxDeductableCheckbox))
                    .addComponent(jLabel13)
                    .addComponent(newTransactionButton)
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel10)
                            .addComponent(jLabel11)
                            .addComponent(jLabel55)
                            .addComponent(jLabel56))
                        .addGap(18, 18, 18)
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(newTransactionAccountComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionCheckNumber, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionCategoryBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionActionField, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addComponent(jLabel9)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel54)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(newTransactionAssociateIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(422, 422, 422))
        );
        addTransactionLayout.setVerticalGroup(
            addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(addTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addGap(5, 5, 5)
                        .addComponent(jLabel6))
                    .addGroup(addTransactionLayout.createSequentialGroup()
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(newTransactionMonthBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionDayBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(newTransactionYearBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel7)
                            .addComponent(newTransactionDirectionBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(11, 11, 11)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel8)
                    .addComponent(newTransactionAmmountField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel9)
                    .addComponent(jLabel54)
                    .addComponent(newTransactionAssociateIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel10)
                    .addComponent(newTransactionCategoryBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel11)
                    .addComponent(newTransactionCheckNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(newTransactionAccountComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel55))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel56)
                    .addComponent(newTransactionActionField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(addTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel12)
                    .addComponent(newTransactionTaxDeductableCheckbox))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel13)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane10, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(newTransactionButton)
                .addContainerGap(36, Short.MAX_VALUE))
        );

        transactionsPane.addTab(resourceMap.getString("addTransaction.TabConstraints.tabTitle"), addTransaction); // NOI18N

        editTransaction.setName("editTransaction"); // NOI18N

        jLabel16.setText(resourceMap.getString("jLabel16.text")); // NOI18N
        jLabel16.setName("jLabel16"); // NOI18N

        transactionIdComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", " " }));
        transactionIdComboBox.setName("transactionIdComboBox"); // NOI18N

        jScrollPane12.setName("jScrollPane12"); // NOI18N

        editTransactionTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Date", "Action", "Ammount", "Payee/Payer", "Category", "Subcategory", "Check #", "Tax Deductable", "Notes"
            }
        ));
        editTransactionTable.setName("editTransactionTable"); // NOI18N
        jScrollPane12.setViewportView(editTransactionTable);
        editTransactionTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title0")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title1")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title2")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title3")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title4")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title5")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(6).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title6")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(7).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title7")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(8).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title8")); // NOI18N
        editTransactionTable.getColumnModel().getColumn(9).setHeaderValue(resourceMap.getString("editTransactionTable.columnModel.title9")); // NOI18N

        jScrollPane13.setName("jScrollPane13"); // NOI18N

        jTextPane1.setText(resourceMap.getString("jTextPane1.text")); // NOI18N
        jTextPane1.setName("jTextPane1"); // NOI18N
        jScrollPane13.setViewportView(jTextPane1);

        editTransactionButton.setText(resourceMap.getString("editTransactionButton.text")); // NOI18N
        editTransactionButton.setName("editTransactionButton"); // NOI18N
        editTransactionButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editTransactionButtonActionPerformed(evt);
            }
        });

        editTransactionSelectIDButton.setText(resourceMap.getString("editTransactionSelectIDButton.text")); // NOI18N
        editTransactionSelectIDButton.setName("editTransactionSelectIDButton"); // NOI18N
        editTransactionSelectIDButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editTransactionSelectIDButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout editTransactionLayout = new javax.swing.GroupLayout(editTransaction);
        editTransaction.setLayout(editTransactionLayout);
        editTransactionLayout.setHorizontalGroup(
            editTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel16)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(transactionIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(editTransactionSelectIDButton)
                .addContainerGap(726, Short.MAX_VALUE))
            .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
            .addGroup(editTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane13, javax.swing.GroupLayout.PREFERRED_SIZE, 588, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(336, Short.MAX_VALUE))
            .addGroup(editTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(editTransactionButton)
                .addContainerGap(815, Short.MAX_VALUE))
        );
        editTransactionLayout.setVerticalGroup(
            editTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(editTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(editTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel16)
                    .addComponent(transactionIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(editTransactionSelectIDButton))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane12, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane13, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(editTransactionButton)
                .addContainerGap(302, Short.MAX_VALUE))
        );

        transactionsPane.addTab(resourceMap.getString("editTransaction.TabConstraints.tabTitle"), editTransaction); // NOI18N

        removeTransaction.setName("removeTransaction"); // NOI18N

        jLabel14.setText(resourceMap.getString("jLabel14.text")); // NOI18N
        jLabel14.setName("jLabel14"); // NOI18N

        removeTransactionIdComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40" }));
        removeTransactionIdComboBox.setName("removeTransactionIdComboBox"); // NOI18N

        jScrollPane11.setName("jScrollPane11"); // NOI18N

        removeTransactionTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "ID", "Date", "Action", "Ammount", "Payee/Payer", "Category", "Subcategory", "Check #", "Tax Deductable?", "Notes"
            }
        ));
        removeTransactionTable.setName("removeTransactionTable"); // NOI18N
        jScrollPane11.setViewportView(removeTransactionTable);
        removeTransactionTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("removeTransactionTable.columnModel.title0")); // NOI18N

        removeTransactionButton.setText(resourceMap.getString("removeTransactionButton.text")); // NOI18N
        removeTransactionButton.setName("removeTransactionButton"); // NOI18N
        removeTransactionButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeTransactionButtonActionPerformed(evt);
            }
        });

        jLabel15.setText(resourceMap.getString("jLabel15.text")); // NOI18N
        jLabel15.setName("jLabel15"); // NOI18N

        removeTransactionIdButton.setText(resourceMap.getString("removeTransactionIdButton.text")); // NOI18N
        removeTransactionIdButton.setName("removeTransactionIdButton"); // NOI18N
        removeTransactionIdButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeTransactionIdButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout removeTransactionLayout = new javax.swing.GroupLayout(removeTransaction);
        removeTransaction.setLayout(removeTransactionLayout);
        removeTransactionLayout.setHorizontalGroup(
            removeTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel14)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeTransactionIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeTransactionIdButton)
                .addContainerGap(727, Short.MAX_VALUE))
            .addGroup(removeTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(removeTransactionButton)
                .addContainerGap(771, Short.MAX_VALUE))
            .addGroup(removeTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel15)
                .addContainerGap(788, Short.MAX_VALUE))
            .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        removeTransactionLayout.setVerticalGroup(
            removeTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(removeTransactionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(removeTransactionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel14)
                    .addComponent(removeTransactionIdComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(removeTransactionIdButton))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane11, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(removeTransactionButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel15)
                .addContainerGap(364, Short.MAX_VALUE))
        );

        transactionsPane.addTab(resourceMap.getString("removeTransaction.TabConstraints.tabTitle"), removeTransaction); // NOI18N

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(transactionsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE)
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(transactionsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel6.TabConstraints.tabTitle"), jPanel6); // NOI18N

        jPanel11.setName("jPanel11"); // NOI18N

        jTabbedPane3.setName("jTabbedPane3"); // NOI18N

        jPanel12.setName("jPanel12"); // NOI18N

        jScrollPane22.setName("jScrollPane22"); // NOI18N

        accountsTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Account Name", "Account Balance"
            }
        ));
        accountsTable.setName("accountsTable"); // NOI18N
        jScrollPane22.setViewportView(accountsTable);

        javax.swing.GroupLayout jPanel12Layout = new javax.swing.GroupLayout(jPanel12);
        jPanel12.setLayout(jPanel12Layout);
        jPanel12Layout.setHorizontalGroup(
            jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane22, javax.swing.GroupLayout.DEFAULT_SIZE, 934, Short.MAX_VALUE)
        );
        jPanel12Layout.setVerticalGroup(
            jPanel12Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane22, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        jTabbedPane3.addTab(resourceMap.getString("jPanel12.TabConstraints.tabTitle"), jPanel12); // NOI18N

        jPanel7.setName("jPanel7"); // NOI18N

        jLabel57.setText(resourceMap.getString("jLabel57.text")); // NOI18N
        jLabel57.setName("jLabel57"); // NOI18N

        fixBalanceComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        fixBalanceComboBox.setName("fixBalanceComboBox"); // NOI18N

        jLabel58.setText(resourceMap.getString("jLabel58.text")); // NOI18N
        jLabel58.setName("jLabel58"); // NOI18N

        editBalanceField.setText(resourceMap.getString("editBalanceField.text")); // NOI18N
        editBalanceField.setName("editBalanceField"); // NOI18N

        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addComponent(jLabel57)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(fixBalanceComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel7Layout.createSequentialGroup()
                        .addComponent(jLabel58)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(editBalanceField, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jButton1))
                .addContainerGap(794, Short.MAX_VALUE))
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel57)
                    .addComponent(fixBalanceComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel58)
                    .addComponent(editBalanceField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButton1)
                .addContainerGap(401, Short.MAX_VALUE))
        );

        jTabbedPane3.addTab(resourceMap.getString("jPanel7.TabConstraints.tabTitle"), jPanel7); // NOI18N

        javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
        jPanel11.setLayout(jPanel11Layout);
        jPanel11Layout.setHorizontalGroup(
            jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 939, Short.MAX_VALUE)
        );
        jPanel11Layout.setVerticalGroup(
            jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
        );

        mainTabbedPane.addTab(resourceMap.getString("jPanel11.TabConstraints.tabTitle"), jPanel11); // NOI18N

        jTabbedPane2.setName("jTabbedPane2"); // NOI18N
        jTabbedPane2.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTabbedPane2FocusGained(evt);
            }
        });

        createReportPanel.setName("createReportPanel"); // NOI18N

        jScrollPane7.setName("jScrollPane7"); // NOI18N

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Monthly Budget Report", "Annual Budget Report", "Member Contribution Report", "Nonmember Contribution Report" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jList1.setName("jList1"); // NOI18N
        jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                jList1ValueChanged(evt);
            }
        });
        jScrollPane7.setViewportView(jList1);

        createReportContentPane.setEnabled(false);
        createReportContentPane.setName("createReportContentPane"); // NOI18N

        javax.swing.GroupLayout createReportContentPaneLayout = new javax.swing.GroupLayout(createReportContentPane);
        createReportContentPane.setLayout(createReportContentPaneLayout);
        createReportContentPaneLayout.setHorizontalGroup(
            createReportContentPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 670, Short.MAX_VALUE)
        );
        createReportContentPaneLayout.setVerticalGroup(
            createReportContentPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 497, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout createReportPanelLayout = new javax.swing.GroupLayout(createReportPanel);
        createReportPanel.setLayout(createReportPanelLayout);
        createReportPanelLayout.setHorizontalGroup(
            createReportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(createReportPanelLayout.createSequentialGroup()
                .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(createReportContentPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        createReportPanelLayout.setVerticalGroup(
            createReportPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
            .addComponent(createReportContentPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        jTabbedPane2.addTab(resourceMap.getString("createReportPanel.TabConstraints.tabTitle"), createReportPanel); // NOI18N

        jPanel8.setName("jPanel8"); // NOI18N

        jScrollPane8.setName("jScrollPane8"); // NOI18N

        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
        javax.swing.tree.DefaultMutableTreeNode treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Monthly Budget Report");
        javax.swing.tree.DefaultMutableTreeNode treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("January2011");
        treeNode2.add(treeNode3);
        treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("February2011");
        treeNode2.add(treeNode3);
        treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("etc");
        treeNode2.add(treeNode3);
        treeNode1.add(treeNode2);
        treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Annual Budget Report");
        treeNode1.add(treeNode2);
        treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Member Contribution Report");
        treeNode1.add(treeNode2);
        treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Nonmember Contribution Report");
        treeNode1.add(treeNode2);
        treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Mailing Label Sheets");
        treeNode1.add(treeNode2);
        openReportsTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
        openReportsTree.setName("openReportsTree"); // NOI18N
        openReportsTree.setRootVisible(false);
        jScrollPane8.setViewportView(openReportsTree);

        reportButtonOpen.setText(resourceMap.getString("reportButtonOpen.text")); // NOI18N
        reportButtonOpen.setName("reportButtonOpen"); // NOI18N
        reportButtonOpen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                reportButtonOpenActionPerformed(evt);
            }
        });

        jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
        jLabel5.setName("jLabel5"); // NOI18N

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 223, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5)
                    .addComponent(reportButtonOpen))
                .addContainerGap(257, Short.MAX_VALUE))
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(reportButtonOpen)
                .addContainerGap(443, Short.MAX_VALUE))
            .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE)
        );

        jTabbedPane2.addTab(resourceMap.getString("jPanel8.TabConstraints.tabTitle"), jPanel8); // NOI18N

        mainTabbedPane.addTab(resourceMap.getString("jTabbedPane2.TabConstraints.tabTitle"), jTabbedPane2); // NOI18N

        mainViewMenuBar.setName("mainViewMenuBar"); // NOI18N

        jMenu1.setText(resourceMap.getString("jMenu1.text")); // NOI18N
        jMenu1.setName("jMenu1"); // NOI18N

        menuCloseItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
        menuCloseItem.setText(resourceMap.getString("menuCloseItem.text")); // NOI18N
        menuCloseItem.setName("menuCloseItem"); // NOI18N
        menuCloseItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuCloseItemActionPerformed(evt);
            }
        });
        jMenu1.add(menuCloseItem);

        mainViewMenuBar.add(jMenu1);

        jMenu2.setText(resourceMap.getString("jMenu2.text")); // NOI18N
        jMenu2.setName("jMenu2"); // NOI18N

        menuPreferencesItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
        menuPreferencesItem.setText(resourceMap.getString("menuPreferencesItem.text")); // NOI18N
        menuPreferencesItem.setName("menuPreferencesItem"); // NOI18N
        menuPreferencesItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuPreferencesItemActionPerformed(evt);
            }
        });
        jMenu2.add(menuPreferencesItem);

        mainViewMenuBar.add(jMenu2);

        jMenu3.setText(resourceMap.getString("jMenu3.text")); // NOI18N
        jMenu3.setName("jMenu3"); // NOI18N

        menuAboutItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        menuAboutItem.setText(resourceMap.getString("menuAboutItem.text")); // NOI18N
        menuAboutItem.setName("menuAboutItem"); // NOI18N
        menuAboutItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuAboutItemActionPerformed(evt);
            }
        });
        jMenu3.add(menuAboutItem);

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setText(resourceMap.getString("jMenuItem1.text")); // NOI18N
        jMenuItem1.setName("jMenuItem1"); // NOI18N
        jMenu3.add(jMenuItem1);

        mainViewMenuBar.add(jMenu3);

        setJMenuBar(mainViewMenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(mainTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 944, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(mainTabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void menuPreferencesItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuPreferencesItemActionPerformed
    showPreferencesWindow();
}//GEN-LAST:event_menuPreferencesItemActionPerformed

private void menuAboutItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuAboutItemActionPerformed
    showAboutBox();
}//GEN-LAST:event_menuAboutItemActionPerformed

private void menuCloseItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuCloseItemActionPerformed
    closing();
}//GEN-LAST:event_menuCloseItemActionPerformed

private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList1ValueChanged
    createReportContentPane.removeAll();
    JList jl = (JList) evt.getSource();
    int index = jl.getSelectedIndex();

    if (index == 0) {
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(createReportContentPane);
        createReportContentPane.setLayout(layout);

        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(cMonthlyBudgetReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(cMonthlyBudgetReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

    } else if (index == 1) {
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(createReportContentPane);
        createReportContentPane.setLayout(layout);

        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(cYearlyBudgetReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(cYearlyBudgetReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

    } else if (index == 2) {
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(createReportContentPane);
        createReportContentPane.setLayout(layout);

        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(cMemberReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(cMemberReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

    } else if (index == 3) {
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(createReportContentPane);
        createReportContentPane.setLayout(layout);

        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(cNonmemberReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(cNonmemberReportPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

    }
}//GEN-LAST:event_jList1ValueChanged

private void editMemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editMemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Edit this Member?");
    if (response == 0) {
        doEditMember();
    }
}//GEN-LAST:event_editMemberButtonActionPerformed

private void removeMemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeMemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to remove this Member?");
    if (response == 0) {
        doRemoveMember();
    }
}//GEN-LAST:event_removeMemberButtonActionPerformed

private void addNewMemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addNewMemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Create Member with this information?");
    if (response == 0) {
        doAddMember();
    }
}//GEN-LAST:event_addNewMemberButtonActionPerformed

private void addNewNonmemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addNewNonmemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Create Nonmember with this information?");
    if (response == 0) {
        doAddNonmember();
    }
}//GEN-LAST:event_addNewNonmemberButtonActionPerformed

private void editNonmemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editNonmemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Edit this Nonmember?");
    if (response == 0) {
        doEditNonmember();
    }
}//GEN-LAST:event_editNonmemberButtonActionPerformed

private void removeNonmemberButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeNonmemberButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to remove this Nonmember?");
    if (response == 0) {
        doRemoveNonmember();
    }
}//GEN-LAST:event_removeNonmemberButtonActionPerformed

private void addNewVendorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addNewVendorButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Create Vendor with this information?");
    if (response == 0) {
        doAddVendor();
    }
}//GEN-LAST:event_addNewVendorButtonActionPerformed

private void editVendorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editVendorButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Edit this Vendor?");
    if (response == 0) {
        doEditVendor();
    }
}//GEN-LAST:event_editVendorButtonActionPerformed

private void removeVendorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeVendorButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to remove this Vendor?");
    if (response == 0) {
        doRemoveVendor();
    }
}//GEN-LAST:event_removeVendorButtonActionPerformed

private void newCategoryButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newCategoryButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Add this Category?");
    if (response == 0) {
        doAddCategory();
    }
}//GEN-LAST:event_newCategoryButtonActionPerformed

private void addSubcategoryButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addSubcategoryButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Add this Subcategory?");
    if (response == 0) {
        doAddSubcategory();
    }
}//GEN-LAST:event_addSubcategoryButtonActionPerformed

private void updateSubcategoryProjectionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateSubcategoryProjectionButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Update this projection?");
    if (response == 0) {
        doUpdateSubcategoryProjection();
    }
}//GEN-LAST:event_updateSubcategoryProjectionButtonActionPerformed

private void newTransactionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newTransactionButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Add this Transaction?");
    if (response == 0) {
        doAddTransaction();
    }
}//GEN-LAST:event_newTransactionButtonActionPerformed

private void editTransactionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTransactionButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Edit this Transaction?");
    if (response == 0) {
        doEditTransaction();
    }
}//GEN-LAST:event_editTransactionButtonActionPerformed

private void removeTransactionButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeTransactionButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to remove this Transaction?\nAccount balances will have to be fixed seperately!");
    if (response == 0) {
        doRemoveTransaction();
    }
}//GEN-LAST:event_removeTransactionButtonActionPerformed

private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
    closing();
}//GEN-LAST:event_formWindowClosing

private void updateSubcategoryLobbyingButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateSubcategoryLobbyingButtonActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Update this projection?");
    if (response == 0) {
        doUpdateSubcategoryLobbying();
    }
}//GEN-LAST:event_updateSubcategoryLobbyingButtonActionPerformed

private void categoryAndSubcategoryListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_categoryAndSubcategoryListValueChanged
    String subcategory = categoryAndSubcategoryList.getSelectedValue().toString().trim();

    String lobbying = Query.getSubcategoryLobbyingPercent(conn, subcategory);
    String projection = Query.getSubcategoryProjection(conn, subcategory);


    subcategoryProjectionAmmountField.setText(projection);
    subcategoryLobbyingPercentField.setText(lobbying);

}//GEN-LAST:event_categoryAndSubcategoryListValueChanged

private void newTransactionActionFieldFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_newTransactionActionFieldFocusGained
    newTransactionActionField.setText("");
}//GEN-LAST:event_newTransactionActionFieldFocusGained

private void newTransactionCategoryBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newTransactionCategoryBoxActionPerformed
    String selected = newTransactionCategoryBox.getSelectedItem().toString().trim();
    if (!selected.startsWith("0")
            && !selected.startsWith("1")
            && !selected.startsWith("2")
            && !selected.startsWith("3")
            && !selected.startsWith("4")
            && !selected.startsWith("5")
            && !selected.startsWith("6")
            && !selected.startsWith("7")
            && !selected.startsWith("8")
            && !selected.startsWith("9")) {

        JOptionPane.showMessageDialog(this,
                "You must select a subcategory.",
                "Error Message",
                JOptionPane.ERROR_MESSAGE);
        newTransactionCategoryBox.setSelectedIndex(2);
    }
}//GEN-LAST:event_newTransactionCategoryBoxActionPerformed

private void editTransactionSelectIDButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTransactionSelectIDButtonActionPerformed
    try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(transactionIdComboBox.getSelectedItem().toString());
        String query = "SELECT * FROM transactions WHERE transid=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);

        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        editTransactionTable.setModel(dm);
        editTransactionTable.getTableHeader().setReorderingAllowed(false);


    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }
}//GEN-LAST:event_editTransactionSelectIDButtonActionPerformed

private void removeTransactionIdButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeTransactionIdButtonActionPerformed
    try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(transactionIdComboBox.getSelectedItem().toString());
        String query = "SELECT * FROM transactions WHERE transid=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);


        removeTransactionTable.setModel(rs);
        removeTransactionTable.getTableHeader().setReorderingAllowed(false);


    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }
}//GEN-LAST:event_removeTransactionIdButtonActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    int response = JOptionPane.showConfirmDialog(this, "Are you sure you want to update this account's balance?");
    if (response == 0) {
        doUpdateAccountBalance();
    }
}//GEN-LAST:event_jButton1ActionPerformed

private void jTabbedPane2FocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTabbedPane2FocusGained
    initializeReportTree();
}//GEN-LAST:event_jTabbedPane2FocusGained

private void reportButtonOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reportButtonOpenActionPerformed
    TreePath path = openReportsTree.getSelectionPath();
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
    if (node.isLeaf()) {
        String filePath = "";
        TreeNode[] leafPath = node.getPath();
        for (int i = 0; i < leafPath.length; i++) {
            if (i == leafPath.length - 1) {
                filePath += leafPath[i].toString();
            } else {
                filePath += leafPath[i].toString() + "\\";
            }
        }
        File file = new File(filePath);
        try {
            Desktop.getDesktop().open(file);
        } catch (IOException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}//GEN-LAST:event_reportButtonOpenActionPerformed

    private void memberEditGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_memberEditGoActionPerformed
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(memberIDedit.getSelectedItem().toString());
        String query = "SELECT m.idnum, firstName, lastName, address, city, state, zip, zip4, phonenumber, email FROM Member m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        memberEditTable.setModel(dm);
        memberEditTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }
    }//GEN-LAST:event_memberEditGoActionPerformed

    private void nonmemberEditGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonmemberEditGoActionPerformed
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(nonmemberIDedit.getSelectedItem().toString());
        String query = "SELECT m.idnum, fullName, address, city, state, zip, zip4, phonenumber, email FROM Nonmember m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        nonmemberEditTable.setModel(dm);
        nonmemberEditTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }  
    }//GEN-LAST:event_nonmemberEditGoActionPerformed

    private void nonmemberRemoveGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonmemberRemoveGoActionPerformed
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(nonmemberIDremove.getSelectedItem().toString());
        String query = "SELECT m.idnum, fullName, address, city, state, zip, zip4, phonenumber, email FROM Nonmember m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        nonmemberRemoveTable.setModel(dm);
        nonmemberRemoveTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }        // TODO add your handling code here:
    }//GEN-LAST:event_nonmemberRemoveGoActionPerformed

    private void vendorRemoveGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vendorRemoveGoActionPerformed
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(vendorIDremove.getSelectedItem().toString());
        String query = "SELECT m.idnum, vendorName, address, city, state, zip, zip4, phonenumber, email FROM Vendor m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        vendorRemoveTable.setModel(dm);
        vendorRemoveTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }        // TODO add your handling code here:
    }//GEN-LAST:event_vendorRemoveGoActionPerformed

    private void vendorEditGoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vendorEditGoActionPerformed
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(vendorIDedit.getSelectedItem().toString());
        String query = "SELECT m.idnum, vendorName, address, city, state, zip, zip4, phonenumber, email FROM Vendor m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        vendorEditTable.setModel(dm);
        vendorEditTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }        // TODO add your handling code here:
    }//GEN-LAST:event_vendorEditGoActionPerformed

    private void memberRemoveGoActionPerformed(java.awt.event.ActionEvent evt) {
        try {
        ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
        int id = Integer.parseInt(memberIDremove.getSelectedItem().toString());
        String query = "SELECT m.idnum, firstName, lastName, address, city, state, zip, zip4, phonenumber, email FROM Member m JOIN Associate a ON m.idNum = a.idNum WHERE m.idnum=" + id;
        ResultSetTableModel rs = fac.getResultSetTableModel(query);
       
        DefaultTableModel dm = new DefaultTableModel();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getColumnName(i));
            dm.addColumn(rs.getColumnName(i));
        }
        ArrayList<Object> row = new ArrayList<Object>();
        for (int i = 0; i < rs.getColumnCount(); i++) {
            System.out.println(rs.getValueAt(0, i));
            row.add(rs.getValueAt(0, i));
        }
        dm.addRow(row.toArray());
        membersDeleteTable.setModel(dm);
        membersDeleteTable.getTableHeader().setReorderingAllowed(false);
       
       
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(final String args[]) {

        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(MainView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(MainView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(MainView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MainView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                if (args[0].contains("r")) {
                    new MainView(true).setVisible(true);
                } else {
                    new MainView(false).setVisible(true);
                }
            }
        });
    }

    public void showPreferencesWindow() {
        if (preferencesWindow == null) {
            JFrame mainFrame = ALWVApp.getApplication().getMainFrame();
            preferencesWindow = new PreferencesWindow(mainFrame, true, this);
            preferencesWindow.setLocationRelativeTo(mainFrame);
        }
        ALWVApp.getApplication().show(preferencesWindow);
    }

    private void initializeReportTree() {
        File reportsDirectory = new File("reports");

        DefaultMutableTreeNode root = getDirectoryStructure(reportsDirectory);

        openReportsTree.setCellRenderer(new FileTreeCellRenderer());
        openReportsTree.setModel(new DefaultTreeModel(root));
    }

    private DefaultMutableTreeNode getDirectoryStructure(File f) {
        if (!f.isDirectory()) {
            System.out.println("     " + f.getName());
            return new DefaultMutableTreeNode(f.getName());
        } else {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(f.getName());
            File[] files = f.listFiles();
            System.out.println("Directory: " + f.getName());
            for (int i = 0; i < files.length; i++) {
                node.add(getDirectoryStructure(files[i]));
            }
            return node;
        }
    }

    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = ALWVApp.getApplication().getMainFrame();
            aboutBox = new ALWVAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        ALWVApp.getApplication().show(aboutBox);
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField MlastNameAddM;
    private javax.swing.JTable accountsTable;
    private javax.swing.JPanel addNewMember;
    private javax.swing.JButton addNewMemberButton;
    private javax.swing.JPanel addNewNonmember;
    private javax.swing.JButton addNewNonmemberButton;
    private javax.swing.JPanel addNewVendor;
    private javax.swing.JButton addNewVendorButton;
    private javax.swing.JPanel addProjection;
    private javax.swing.JLabel addProjectionDescription;
    private javax.swing.JButton addSubcategoryButton;
    private javax.swing.JPanel addTransaction;
    private javax.swing.JTextField addressAddM;
    private javax.swing.JTextField addressAddNM;
    private javax.swing.JTextField addressAddV;
    private javax.swing.JTabbedPane budgetPane;
    private javax.swing.JTable budgetTable;
    private javax.swing.JList categoryAndSubcategoryList;
    private javax.swing.JList categoryList;
    private javax.swing.JTextField cityAddM;
    private javax.swing.JTextField cityAddNM;
    private javax.swing.JTextField cityAddV;
    private javax.swing.JPanel createReportContentPane;
    private javax.swing.JPanel createReportPanel;
    private javax.swing.JTextField editBalanceField;
    private javax.swing.JPanel editMember;
    private javax.swing.JButton editMemberButton;
    private javax.swing.JPanel editNonmember;
    private javax.swing.JButton editNonmemberButton;
    private javax.swing.JPanel editTransaction;
    private javax.swing.JButton editTransactionButton;
    private javax.swing.JButton editTransactionSelectIDButton;
    private javax.swing.JTable editTransactionTable;
    private javax.swing.JPanel editVendor;
    private javax.swing.JButton editVendorButton;
    private javax.swing.JTextField emailAddM;
    private javax.swing.JTextField emailAddNM;
    private javax.swing.JTextField emailAddV;
    private javax.swing.JTextField firstNameAddM;
    private javax.swing.JComboBox fixBalanceComboBox;
    private javax.swing.JTextField fullNameAddNM;
    private javax.swing.JTextField fullNameAddV;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel30;
    private javax.swing.JLabel jLabel31;
    private javax.swing.JLabel jLabel32;
    private javax.swing.JLabel jLabel33;
    private javax.swing.JLabel jLabel34;
    private javax.swing.JLabel jLabel35;
    private javax.swing.JLabel jLabel36;
    private javax.swing.JLabel jLabel37;
    private javax.swing.JLabel jLabel38;
    private javax.swing.JLabel jLabel39;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel40;
    private javax.swing.JLabel jLabel41;
    private javax.swing.JLabel jLabel42;
    private javax.swing.JLabel jLabel43;
    private javax.swing.JLabel jLabel44;
    private javax.swing.JLabel jLabel45;
    private javax.swing.JLabel jLabel46;
    private javax.swing.JLabel jLabel47;
    private javax.swing.JLabel jLabel48;
    private javax.swing.JLabel jLabel49;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel50;
    private javax.swing.JLabel jLabel51;
    private javax.swing.JLabel jLabel52;
    private javax.swing.JLabel jLabel53;
    private javax.swing.JLabel jLabel54;
    private javax.swing.JLabel jLabel55;
    private javax.swing.JLabel jLabel56;
    private javax.swing.JLabel jLabel57;
    private javax.swing.JLabel jLabel58;
    private javax.swing.JLabel jLabel59;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JList jList1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel11;
    private javax.swing.JPanel jPanel12;
    private javax.swing.JPanel jPanel16;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel23;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane10;
    private javax.swing.JScrollPane jScrollPane11;
    private javax.swing.JScrollPane jScrollPane12;
    private javax.swing.JScrollPane jScrollPane13;
    private javax.swing.JScrollPane jScrollPane14;
    private javax.swing.JScrollPane jScrollPane15;
    private javax.swing.JScrollPane jScrollPane16;
    private javax.swing.JScrollPane jScrollPane17;
    private javax.swing.JScrollPane jScrollPane18;
    private javax.swing.JScrollPane jScrollPane19;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane20;
    private javax.swing.JScrollPane jScrollPane21;
    private javax.swing.JScrollPane jScrollPane22;
    private javax.swing.JScrollPane jScrollPane23;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JScrollPane jScrollPane8;
    private javax.swing.JScrollPane jScrollPane9;
    private javax.swing.JTabbedPane jTabbedPane2;
    private javax.swing.JTabbedPane jTabbedPane3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField30;
    private javax.swing.JTextPane jTextPane1;
    private javax.swing.JTextPane jTextPane2;
    private javax.swing.JTextPane jTextPane3;
    private javax.swing.JTextPane jTextPane5;
    private javax.swing.JTabbedPane mainTabbedPane;
    private javax.swing.JMenuBar mainViewMenuBar;
    private javax.swing.JButton memberEditGo;
    private javax.swing.JTable memberEditTable;
    private javax.swing.JComboBox memberIDedit;
    private javax.swing.JComboBox memberIDremove;
    private javax.swing.JTabbedPane memberPane;
    private javax.swing.JButton memberRemoveGo;
    private javax.swing.JTable membersDeleteTable;
    private javax.swing.JTable membersTable;
    private javax.swing.JMenuItem menuAboutItem;
    private javax.swing.JMenuItem menuCloseItem;
    private javax.swing.JMenuItem menuPreferencesItem;
    private javax.swing.JPanel newCategory;
    private javax.swing.JButton newCategoryButton;
    private javax.swing.JTextField newCategoryNameField;
    private javax.swing.JTextField newSubCategoryTextField;
    private javax.swing.JPanel newSubcategory;
    private javax.swing.JLabel newSubcategoryDescription;
    private javax.swing.JTextField newSubcategoryProjectionField;
    private javax.swing.JComboBox newTransactionAccountComboBox;
    private javax.swing.JTextField newTransactionActionField;
    private javax.swing.JTextField newTransactionAmmountField;
    private javax.swing.JComboBox newTransactionAssociateIdComboBox;
    private javax.swing.JButton newTransactionButton;
    private javax.swing.JComboBox newTransactionCategoryBox;
    private javax.swing.JTextField newTransactionCheckNumber;
    private javax.swing.JComboBox newTransactionDayBox;
    private javax.swing.JComboBox newTransactionDirectionBox;
    private javax.swing.JComboBox newTransactionMonthBox;
    private javax.swing.JTextArea newTransactionNoteArea;
    private javax.swing.JCheckBox newTransactionTaxDeductableCheckbox;
    private javax.swing.JComboBox newTransactionYearBox;
    private javax.swing.JButton nonmemberEditGo;
    private javax.swing.JTable nonmemberEditTable;
    private javax.swing.JComboBox nonmemberIDedit;
    private javax.swing.JComboBox nonmemberIDremove;
    private javax.swing.JTabbedPane nonmemberPane;
    private javax.swing.JButton nonmemberRemoveGo;
    private javax.swing.JTable nonmemberRemoveTable;
    private javax.swing.JTable nonmembersTable;
    private javax.swing.JTree openReportsTree;
    private javax.swing.JTextField phoneAddM;
    private javax.swing.JTextField phoneAddNM;
    private javax.swing.JTextField phoneAddV;
    private javax.swing.JPanel removeMember;
    private javax.swing.JButton removeMemberButton;
    private javax.swing.JPanel removeNonmember;
    private javax.swing.JButton removeNonmemberButton;
    private javax.swing.JPanel removeTransaction;
    private javax.swing.JButton removeTransactionButton;
    private javax.swing.JButton removeTransactionIdButton;
    private javax.swing.JComboBox removeTransactionIdComboBox;
    private javax.swing.JTable removeTransactionTable;
    private javax.swing.JPanel removeVendor;
    private javax.swing.JButton removeVendorButton;
    private javax.swing.JButton reportButtonOpen;
    private javax.swing.JTextField stateAddM;
    private javax.swing.JTextField stateAddNM;
    private javax.swing.JTextField stateAddV;
    private javax.swing.JTextField subcategoryLobbyingPercentField;
    private javax.swing.JTextField subcategoryProjectionAmmountField;
    private javax.swing.JComboBox transactionIdComboBox;
    private javax.swing.JTabbedPane transactionsPane;
    private javax.swing.JTable transactionsTable;
    private javax.swing.JButton updateSubcategoryLobbyingButton;
    private javax.swing.JButton updateSubcategoryProjectionButton;
    private javax.swing.JButton vendorEditGo;
    private javax.swing.JTable vendorEditTable;
    private javax.swing.JComboBox vendorIDedit;
    private javax.swing.JComboBox vendorIDremove;
    private javax.swing.JTabbedPane vendorPane;
    private javax.swing.JButton vendorRemoveGo;
    private javax.swing.JTable vendorRemoveTable;
    private javax.swing.JTable vendorsTable;
    private javax.swing.JTextField zip4AddM;
    private javax.swing.JTextField zip4AddNM;
    private javax.swing.JTextField zip4AddV;
    private javax.swing.JTextField zipAddM;
    private javax.swing.JTextField zipAddNM;
    private javax.swing.JTextField zipAddV;
    // End of variables declaration//GEN-END:variables
    private javax.swing.JDialog preferencesWindow;
    private javax.swing.JDialog aboutBox;
    private CreateMemberReportPane cMemberReportPane;
    private CreateMonthlyBudgetReportPane cMonthlyBudgetReportPane;
    private CreateNonmemberReportPane cNonmemberReportPane;
    private CreateYearlyBudgetReportPane cYearlyBudgetReportPane;
    private Connection conn;

    /*
     * METHOD Declaration Block
     * These methods are not automatically generated, and are to be used for
     * most of the database functionality of the program.
     * 
     * TODO: Add javadoc to all methods. 
     */
    private void closing() {
        int i = JOptionPane.showConfirmDialog(this, "Are you sure you want to exit? Any unsubmitted changes will be lost.");
        if (i == 0) {
            System.exit(0);
        }
    }

    private void doEditMember() { //TODO: Implement
            try {
            int id = Integer.parseInt(memberEditTable.getValueAt(0, 0).toString());
            String firstName = memberEditTable.getValueAt(0, 1).toString();
            String lastName = memberEditTable.getValueAt(0, 2).toString();
            String address = memberEditTable.getValueAt(0, 3).toString();
            String city = memberEditTable.getValueAt(0, 4).toString();
            String state = memberEditTable.getValueAt(0, 5).toString();
            int zip = Integer.parseInt(memberEditTable.getValueAt(0, 6).toString());
            int zip4 = Integer.parseInt(memberEditTable.getValueAt(0, 7).toString());
            String phone = memberEditTable.getValueAt(0, 8).toString();
            String email = memberEditTable.getValueAt(0, 9).toString();
            Query.updateMember(conn, id, firstName, lastName, address, city, state, zip, zip4, phone, email);
            
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
            
            updateAllDatabaseObjects();
    }

    private void doRemoveMember() { //TODO: Implement
            try {
            int id = Integer.parseInt(membersDeleteTable.getValueAt(0, 0).toString());
            Query.removeMember(conn, id);
            updateAllDatabaseObjects();
            JOptionPane.showMessageDialog(this, "Member with ID " + id + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There was an error performing this operation:\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
      
//        int memberID = Integer.parseInt(memberIDremove.getSelectedItem().toString());
//        Query.removeMember(conn, memberID );
//        JOptionPane.showMessageDialog(this, "Member with ID " + memberID + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        memberIDremove.removeItemAt(memberIDremove.getSelectedIndex());
        memberIDedit.removeItemAt(memberIDremove.getSelectedIndex());
        
        updateAllDatabaseObjects();
    }

    private void doAddMember() { //TODO: Implement
        int zip = Integer.parseInt(zipAddM.getText().trim()); 
        int zip4 = Integer.parseInt(zip4AddM.getText().trim()); 
        Query.addMember(conn, firstNameAddM.getText().trim(), MlastNameAddM.getText().trim(), addressAddM.getText().trim(),cityAddM.getText().trim(),stateAddM.getText().trim(),zip , zip4 , phoneAddM.getText().trim(), emailAddM.getText().trim());
        JOptionPane.showMessageDialog(this, "Member " + firstNameAddM.getText().trim() + " " + MlastNameAddM.getText().trim() + " has been added", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        //Clear tables
        firstNameAddM.setText("");
        MlastNameAddM.setText("");
        addressAddM.setText("");
        cityAddM.setText("");        
        stateAddM.setText("");    
        zipAddM.setText("");
        zip4AddM.setText("");
        phoneAddM.setText("");
        emailAddM.setText("");        
        
        updateAllDatabaseObjects();
    }

    private void doAddNonmember() { //TODO: Implement
        int zip = Integer.parseInt(zipAddNM.getText().trim()); 
        int zip4 = Integer.parseInt(zip4AddNM.getText().trim()); 
        Query.addNonmember(conn, fullNameAddNM.getText().trim(), addressAddNM.getText().trim(),cityAddNM.getText().trim(),stateAddNM.getText().trim(), zip , zip4 , phoneAddNM.getText().trim(), emailAddNM.getText().trim());
        JOptionPane.showMessageDialog(this, "Non Member " + fullNameAddNM.getText().trim() + " has been added", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        //Clear tables
        fullNameAddNM.setText("");
        addressAddNM.setText("");
        cityAddNM.setText("");        
        stateAddNM.setText("");    
        zipAddNM.setText("");
        zip4AddNM.setText("");
        phoneAddNM.setText("");
        emailAddNM.setText(""); 
        
        updateAllDatabaseObjects();
    }

    private void doEditNonmember() { //TODO: Implement
         try {
            int id = Integer.parseInt(nonmemberEditTable.getValueAt(0, 0).toString());
            String fullName = nonmemberEditTable.getValueAt(0, 1).toString();
            String address = nonmemberEditTable.getValueAt(0, 2).toString();
            String city = nonmemberEditTable.getValueAt(0, 3).toString();
            String state = nonmemberEditTable.getValueAt(0, 4).toString();
            int zip = Integer.parseInt(nonmemberEditTable.getValueAt(0, 5).toString());
            int zip4 = Integer.parseInt(nonmemberEditTable.getValueAt(0, 6).toString());
            String phone = nonmemberEditTable.getValueAt(0, 7).toString();
            String email = nonmemberEditTable.getValueAt(0, 8).toString();
            Query.updateNonMember(conn, id, fullName, address, city, state, zip, zip4, phone, email);
            
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
         
         updateAllDatabaseObjects();
        
    }

    private void doRemoveNonmember() { //TODO: Implement
        try {
            int id = Integer.parseInt(nonmemberRemoveTable.getValueAt(0, 0).toString());
            Query.removeNonMember(conn, id);
            JOptionPane.showMessageDialog(this, "Nonmember with ID " + id + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There was an error performing this operation:\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
      
//        int nonmemberID = Integer.parseInt(nonmemberIDremove.getSelectedItem().toString());
//        Query.removeMember(conn, nonmemberID );
//        JOptionPane.showMessageDialog(this, "Nonmember with ID " + nonmemberID + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        nonmemberIDremove.removeItemAt(nonmemberIDremove.getSelectedIndex());
        nonmemberIDedit.removeItemAt(nonmemberIDremove.getSelectedIndex());
        
        updateAllDatabaseObjects();
    }

    private void doAddVendor() { //TODO: Implement
          int zip = Integer.parseInt(zipAddV.getText().trim()); 
        int zip4 = Integer.parseInt(zip4AddV.getText().trim()); 
        Query.addVendor(conn, fullNameAddV.getText().trim(), addressAddV.getText().trim(),cityAddV.getText().trim(),stateAddV.getText().trim(), zip , zip4 , phoneAddV.getText().trim(), emailAddV.getText().trim());
        JOptionPane.showMessageDialog(this, "Vendor " + fullNameAddV.getText().trim() + " has been added", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        //Clear tables
        fullNameAddV.setText("");
        addressAddV.setText("");
        cityAddV.setText("");        
        stateAddV.setText("");    
        zipAddV.setText("");
        zip4AddV.setText("");
        phoneAddV.setText("");
        emailAddV.setText(""); 
        
        updateAllDatabaseObjects();
    }

    private void doEditVendor() { //TODO: Implement
         try {
            int id = Integer.parseInt(vendorEditTable.getValueAt(0, 0).toString());
            String vendorName = vendorEditTable.getValueAt(0, 1).toString();
            String address = vendorEditTable.getValueAt(0, 2).toString();
            String city = vendorEditTable.getValueAt(0, 3).toString();
            String state = vendorEditTable.getValueAt(0, 4).toString();
            int zip = Integer.parseInt(vendorEditTable.getValueAt(0, 5).toString());
            int zip4 = Integer.parseInt(vendorEditTable.getValueAt(0, 6).toString());
            String phone = vendorEditTable.getValueAt(0, 7).toString();
            String email = vendorEditTable.getValueAt(0, 8).toString();
            Query.updateVendor(conn, id, vendorName, address, city, state, zip, zip4, phone, email);
            
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
        updateAllDatabaseObjects();
    }

    private void doRemoveVendor() { //TODO: Implement
        try {
            int id = Integer.parseInt(vendorRemoveTable.getValueAt(0, 0).toString());
            Query.removeVendor(conn, id);
            JOptionPane.showMessageDialog(this, "Vendor with ID " + id + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        }
        catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There was an error performing this operation:\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);  
        }
      
//        int memberID = Integer.parseInt(memberIDremove.getSelectedItem().toString());
//        Query.removeMember(conn, memberID );
//        JOptionPane.showMessageDialog(this, "Member with ID " + memberID + " has been removed", "Success", JOptionPane.INFORMATION_MESSAGE);
        
        vendorIDremove.removeItemAt(vendorIDremove.getSelectedIndex());
        vendorIDedit.removeItemAt(vendorIDremove.getSelectedIndex());
        
        updateAllDatabaseObjects();
    }

    private void doAddCategory() {
        Query.addNewCategory(conn, newCategoryNameField.getText().trim());
        JOptionPane.showMessageDialog(this, "Category Added", "Success", JOptionPane.INFORMATION_MESSAGE);
        updateAllDatabaseObjects();
    }

    private void doAddSubcategory() {
        int projection = Integer.parseInt(newSubcategoryProjectionField.getText());
        double lobbyingpercent = Double.parseDouble(jTextField30.getText());
        String category = categoryList.getSelectedValue().toString();
        Query.addNewSubcategory(conn, category, newSubCategoryTextField.getText().trim(), projection, lobbyingpercent);
        JOptionPane.showMessageDialog(this, "Subcategory Added", "Success", JOptionPane.INFORMATION_MESSAGE);
        updateAllDatabaseObjects();
    }

    private void doUpdateSubcategoryProjection() {
        int projection = Integer.parseInt(subcategoryProjectionAmmountField.getText());

        String subcategory = categoryAndSubcategoryList.getSelectedValue().toString().trim();
        Query.setProjectedBudget(conn, subcategory, projection, LocalDate.now().getYear());
        JOptionPane.showMessageDialog(this, "Subcategory Projection Updated", "Success", JOptionPane.INFORMATION_MESSAGE);
        updateAllDatabaseObjects();
    }

    private void doUpdateSubcategoryLobbying() {
        double lobbying = Double.parseDouble(subcategoryProjectionAmmountField.getText());

        String subcategory = categoryAndSubcategoryList.getSelectedValue().toString().trim();
        Query.setLobbying(conn, subcategory, lobbying);
        JOptionPane.showMessageDialog(this, "Subcategory Lobbying Expense Updated", "Success", JOptionPane.INFORMATION_MESSAGE);
        updateAllDatabaseObjects();
    }

    private void doAddTransaction() {
        try {
            int year = Integer.parseInt(newTransactionYearBox.getSelectedItem().toString().trim());
            int month = newTransactionMonthBox.getSelectedIndex() + 1;
            int day = newTransactionDayBox.getSelectedIndex() + 1;
            LocalDate d = new LocalDate(year, month, day);
            String subcategory = newTransactionCategoryBox.getSelectedItem().toString().trim();
            int l = newTransactionCategoryBox.getSelectedIndex();
            while (newTransactionCategoryBox.getItemAt(l).toString().startsWith(" ")) {
                l--;
            }
            String category = newTransactionCategoryBox.getItemAt(l).toString().trim();
            double ammount = Double.parseDouble(newTransactionAmmountField.getText());
            String action = newTransactionActionField.getText();
            int associateID = Integer.parseInt(newTransactionAssociateIdComboBox.getSelectedItem().toString());
            String note = newTransactionNoteArea.getText();
            int isdeductable = 0;
            if (newTransactionTaxDeductableCheckbox.isSelected()) {
                isdeductable = 1;
            }
            double paymentAmount = 0;
            double depositAmount = 0;
            if (newTransactionDirectionBox.getSelectedItem().toString().trim().equals("Payment")) {
                paymentAmount = ammount;
            } else {
                depositAmount = ammount;
            }
            int account = Integer.parseInt(newTransactionAccountComboBox.getSelectedItem().toString().split("-")[0]);
            int checknumber = Integer.parseInt(newTransactionCheckNumber.getText());

            Query.addTransaction(conn, d, category, subcategory, paymentAmount, depositAmount, checknumber, action, associateID, note, account, isdeductable);
            JOptionPane.showMessageDialog(this, "Transaction Added", "Add Transaction", JOptionPane.INFORMATION_MESSAGE);
            updateAllDatabaseObjects();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.", "Error", JOptionPane.ERROR_MESSAGE);

        }
    }

    private void doEditTransaction() {
        try {
            int id = Integer.parseInt(editTransactionTable.getValueAt(0, 0).toString());
            String transdate = editTransactionTable.getValueAt(0, 1).toString();
            String[] splitdate = transdate.split("-");
            LocalDate d = new LocalDate(Integer.parseInt(splitdate[0]), Integer.parseInt(splitdate[1]), Integer.parseInt(splitdate[2]));
            String category = editTransactionTable.getValueAt(0, 2).toString();
            String subcategory = editTransactionTable.getValueAt(0, 3).toString();
            double payment = Double.parseDouble(editTransactionTable.getValueAt(0, 4).toString());
            int checknumber = Integer.parseInt(editTransactionTable.getValueAt(0, 5).toString());
            String action = editTransactionTable.getValueAt(0, 6).toString();
            int associateid = Integer.parseInt(editTransactionTable.getValueAt(0, 7).toString());
            String note = editTransactionTable.getValueAt(0, 8).toString();
            double deposit = Double.parseDouble(editTransactionTable.getValueAt(0, 9).toString());
            int isdeductable = Integer.parseInt(editTransactionTable.getValueAt(0, 10).toString());
            Query.updateFullTransaction(conn, id, d, category, subcategory, payment, checknumber, action, associateid, note, deposit, isdeductable);
            System.out.println(subcategory);
            updateAllDatabaseObjects();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void doRemoveTransaction() {
        try {
            int id = Integer.parseInt(removeTransactionTable.getValueAt(0, 0).toString());
            Query.removeTransaction(conn, id);
            updateAllDatabaseObjects();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There was an error performing this operation:\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void doUpdateAccountBalance() {
        try {
            int account = Integer.parseInt(newTransactionAccountComboBox.getSelectedItem().toString().split("-")[0]);
            double balance = Double.parseDouble(editBalanceField.getText());
            Query.setAccountBalance(conn, balance, account);
            updateAllDatabaseObjects();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "There is an error with something you entered. Please check that all fields contain appropriate values.\n" + e.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }

    }

    /*
     * Populate Table Methods
     * TODO: Gather all queries from another class rather than hardcoding them
     * TODO: Make these queries adjustable in the preferences window?
     */
    public void updateAllDatabaseObjects() {
        updateAllTables();
        initializeMemberComboBoxes();
        initializeNonMemberComboBoxes();
        initializeVendorComboBoxes();
        initializeAssociateComboBoxes();
        initializeTransactionIdcomboBoxes();
        populateCategoryList();
        populateCategoryAndSubcategoryList();
        populateNewTransactionSubCategoryComboBox();
        populateNewTransactionAccountComboBox();
    }

    public void updateAllTables() {
        conn = ALWVApp.getApplication().getConnection();
        populateMembersTable();
        populateNonmembersTable();
        populateVendorsTable();
        populateTransactionsTable();
        populateAccountsTable();
        populateBudgetTable();

    }

    private void populateMembersTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_MEMBERS);
            membersTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateMembersRemoveTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_MEMBERS);
            membersDeleteTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateNonmembersTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_NONMEMBERS);
            nonmembersTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateVendorsTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_VENDORS);
            vendorsTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateTransactionsTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_TRANSACTIONS);
            transactionsTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateAccountsTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_ACCOUNTS);
            accountsTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void populateBudgetTable() {
        try {
            ResultSetTableModelFactory fac = new ResultSetTableModelFactory(conn);
            ResultSetTableModel rs = fac.getResultSetTableModel(Query.GET_ALL_BUDGET);
            budgetTable.setModel(rs);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void initializeMemberComboBoxes() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ArrayList<Integer> ids = Query.getAllMemberIDs(conn);
        for (int i = 0; i < ids.size(); i++) {
            model.addElement(ids.get(i) + "");
        }
        memberIDedit.setModel(model);
        memberIDremove.setModel(model);
    }

    private void initializeNonMemberComboBoxes() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ArrayList<Integer> ids = Query.getAllNonMemberIDs(conn);
        for (int i = 0; i < ids.size(); i++) {
            model.addElement(ids.get(i) + "");
        }
        nonmemberIDedit.setModel(model);
        nonmemberIDremove.setModel(model);
    }

    private void initializeVendorComboBoxes() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ArrayList<Integer> ids = Query.getAllVendorIDs(conn);
        for (int i = 0; i < ids.size(); i++) {
            model.addElement(ids.get(i) + "");
        }
        vendorIDedit.setModel(model);
        vendorIDremove.setModel(model);
    }

    private void initializeAssociateComboBoxes() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ArrayList<Integer> ids = Query.getAllAssociateIds(conn);
        for (int i = 0; i < ids.size(); i++) {
            model.addElement(ids.get(i) + "");
        }
        newTransactionAssociateIdComboBox.setModel(model);
    }

    private void initializeTransactionIdcomboBoxes() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ArrayList<Integer> ids = Query.getAllTransactionIds(conn);
        for (int i = 0; i < ids.size(); i++) {
            model.addElement(ids.get(i) + "");
        }
        transactionIdComboBox.setModel(model);
        removeTransactionIdComboBox.setModel(model);
    }

    private void populateCategoryList() {
        DefaultListModel model = new DefaultListModel();
        ResultSet rs = Query.getAllCategoryNames(conn);
        try {
            while (rs.next()) {
                model.addElement(rs.getString(("NAME")));
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }


        categoryList.setModel(model);
    }

    private void populateCategoryAndSubcategoryList() {
        DefaultListModel model = new DefaultListModel();
        ResultSet rs = Query.getAllCategoryNames(conn);
        try {
            while (rs.next()) {
                model.addElement(rs.getString(("NAME")));
                ResultSet rs2 = Query.getSubcategoriesUnderCategory(conn, rs.getString("NAME"));
                while (rs2.next()) {
                    model.addElement("     " + rs2.getString("NAME"));
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        categoryAndSubcategoryList.setModel(model);
    }

    private void populateNewTransactionSubCategoryComboBox() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ResultSet rs = Query.getAllCategoryNames(conn);
        try {
            while (rs.next()) {
                model.addElement(rs.getString(("NAME")));

                ResultSet rs2 = Query.getSubcategoriesUnderCategory(conn, rs.getString("NAME"));
                while (rs2.next()) {
                    model.addElement("     " + rs2.getString("NAME"));
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        newTransactionCategoryBox.setModel(model);
        newTransactionCategoryBox.setSelectedIndex(2);

    }

    private void populateNewTransactionAccountComboBox() {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        ResultSet rs = Query.getAllAccountNames(conn);
        try {
            while (rs.next()) {
                model.addElement(rs.getInt("ACCOUNTNUM") + "-" + rs.getString(("NAME")));

            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        newTransactionAccountComboBox.setModel(model);
        fixBalanceComboBox.setModel(model);
    }

    public void setUIFont(FontUIResource f) {
        Enumeration keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
            Object key = keys.nextElement();
            Object value = UIManager.get(key);
            if (value instanceof FontUIResource) {
                FontUIResource orig = (FontUIResource) value;
                Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
                UIManager.put(key, new FontUIResource(font));
            }
        }
    }
}
